当用户到达UITableView的最后一行时,如何动态添加行?

时间:2011-08-24 05:26:08

标签: iphone uitableview dynamic

我有一个UITableview,显示当前10行是固定的静态。现在我想在其中添加一个功能。当用户到达UITableView的最后一行时,我想向表中添加10行。我的意思是目前我在应用程序中显示固定的10行。

但是现在我想在用户到达前一个UITableview的最后一行时再添加10行。

请给我任何建议或任何示例代码以实现我的动机。提前谢谢。

4 个答案:

答案 0 :(得分:15)

实际上非常简单。您需要做的是实现tableView:willDisplayCell:forRowAtIndexPath:方法,该方法属于UITableViewDelegate协议。每次要显示一个单元格时,该方法就会命中。因此,它将告诉您何时将要显示最后一个单元格。然后你可以做类似的事情 -

– (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *) cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{
     if(indexPath.row == [self.array count] - 1) //self.array is the array of items you are displaying
     {
          //If it is the last cell, Add items to your array here & update the table view
     }
}

另一个(有点数学)选项是实现UIScrollView委托方法(UITableViewUIScrollView的子类),即scrollViewDidEndScrollingAnimation:scrollViewDidScroll:。这些将告诉您用户正在查看的内容的y位置。如果发现最底部的内容可见,则可以添加更多项目。

HTH,

阿克沙伊

答案 1 :(得分:12)

uitableview源自uiscrollview。为实现您的目标,您需要实施scrollViewDidEndDecelerating

 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    float endScrolling = scrollView.contentOffset.y + scrollView.frame.size.height;
    if (endScrolling >= scrollView.contentSize.height) 
    {
      // your code goes here
    }
}

这将检测“弹跳效果”,例如向上移动可见行以表示想要看到更多。

答案 2 :(得分:6)

您如何确切地想要调用额外10行的加载?当用户向下滚动以查看默认加载的前10个时,他可能不想再加载10个。

您可以添加“添加更多”行作为表格的最后一行。当用户点击这个时,你再添加10个。

(我不知道怎么会发现一个“弹跳效果”,比如向上移动可见行以表示想要看到更多。)

基本逻辑如下:

  1. cellForRowAtIndexPath中检查用户是否点击了最后一行,然后调用您的代码添加10
  2. 实际添加10行,您必须致电[myTable reloadData]
  3. 但在致电之前,您需要将numberOfRowsInSection的返回值增加10,并确保cellForRowAtIndexPath将正确返回您的新行11-20
  4. ps如果您真的想要在用户到达表格末尾时加载10个额外的行,则需要在cellForRowAtIndexPathwillDisplayCell:forRowAtIndexPath:中调用加载10个以上的行最后一行。

答案 3 :(得分:1)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [categoriesList count];
}

这里categoriesList是一个数组。我们可以向这个数组添加对象,并在tableview中调用reloadData。