IOS開發UI展示之UITableView ──分頁載入

來源:互聯網
上載者:User

在ios開中中,由於螢幕尺寸限制,如果需要顯示的資料很多,需要用到分頁載入。

原理:先資料放到一個table中,先顯示10條,table底部有一察看更多選項,點擊察看更多查看解析的剩餘資料。基本上就是資料來源裡先只放10條, 點擊最後一個cell時, 添加更多的資料到資料來源中. 比如: 

資料來源是個array:

 

NSMutableArray *items;

ViewController的這個方法返回資料條數: +1是為了顯示"載入更多"的那個cell

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

        int count = [items count];

    return  count + 1;

}

 

  這個方法定製cell的顯示, 尤其是"載入更多"的那個cell:

 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    if([indexPath row] == ([items count])) {

        //建立loadMoreCell

        return loadMoreCell;

    }

 

    //create your data cell

 

    return cell;

}

 

  還要處理"載入更多"的那個cell的選擇事件,觸發一個方法來載入更多資料到列表

 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

 

    if (indexPath.row == [items count]) {

        [loadMoreCell setDisplayText:@"loading more ..."];

        [loadMoreCell setAnimating:YES];

        [self performSelectorInBackground:@selector(loadMore) withObject:nil];

        //[loadMoreCell setHighlighted:NO];

        [tableView deselectRowAtIndexPath:indexPath animated:YES];

        return;

    }

 

    //其他cell的事件

 

}

 

  載入資料的方法:

 

-(void)loadMore

{

    NSMutableArray *more; 

        //載入你的資料

    [self performSelectorOnMainThread:@selector(appendTableWith:) withObject:more waitUntilDone:NO];

}

 

  添加資料到列表:

 

-(void) appendTableWith:(NSMutableArray *)data

{

 

    for (int i=0;i<[data count];i++) {

        [items addObject:[data objectAtIndex:i]];

    }

    NSMutableArray *insertIndexPaths = [NSMutableArray arrayWithCapacity:10];

    for (int ind = 0; ind < [data count]; ind++) {

        NSIndexPath    *newPath =  [NSIndexPath indexPathForRow:[items indexOfObject:[data objectAtIndex:ind]] inSection:0];

        [insertIndexPaths addObject:newPath];

    }

    [self.tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation:UITableViewRowAnimationFade];

 

}

 

    我這裡是寫死的資料,作例子,在實現工程項目中,比如:要向伺服器請求資料,一般返回資料會有總共多少頁,一次請求一頁,當使用者需要看更多頁面時,滑動到最下面cell,再請求下一面!

 

   我這裡例子,請求載入更多是寫到didSelectRowAtIndexPath:代理方法中,如果需要自動載入,可以放到- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

代理方法中。   
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.