1

我的目标是显示由我从服务器下拉的一些数据填充的单元格列表。当用户向下滚动时,我希望有一个简短的表格单元格,上面写着“加载更多”,然后随着更多单元格填充数据而消失。

以下是执行此操作的相关部分:

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

   [tableView registerClass:[CGSitesCell class] forCellReuseIdentifier:cellIdentifier];
   // Option 1:   CGSitesCell *cell = [[CGSitesCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
   // Option 2:   CGSitesCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
   //(Still Option 2):  
   //if(cell == nil){
   //      cell = [[CGSitesCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
    }
   if(backupsArray.count !=0){
       //if we not on the last row
      if (indexPath.row < backupsArray.count) {
             [cell.textLabel setText:someData];
      }else{
        UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                                   reuseIdentifier:cellIdentifier];
       [cell.textLabel setText:@"Load More"];
       return cell;
      }
   return cell;
 }

这就是让我难过的地方:选项 1 有效。我看到了我想看到的数据和底部的加载更多。但是,选项 2 不起作用!我看到了数据,但我只看到了一个空白表格单元格。为什么?

谢谢!

4

2 回答 2

1

我遇到了你的问题,不知道你是否发现了问题,但如果你的自定义单元是使用 Interface Builder 构建的,那么你应该注册 Nib,而不是类:

    [self.tableView registerNib:[UINib nibWithNibName:@"CGSitesCell" bundle:nil] forCellReuseIdentifier:@"CGSitesCellIdentifier"];

请在 ViewDidLoad 中执行此操作,而不是在所有单元格调用的 cellForRowAtIndexPath 中执行此操作:-)

于 2015-03-06T10:05:55.027 回答
0

我通过将“加载更多”设置为aUIView并将其设置为UITableView页脚视图而不是将其设置为表格单元格然后仅在表格的最后一行可见时才使其可见

`- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == [backupsArray count] - 1) {

       //load more records here

    }

}`

我还必须设置一个BOOL实例变量来跟踪我何时加载更多,因为这个方法被多次调用,最后一个单元格是可见的,我不想重复加载更多记录。

于 2013-07-01T02:32:18.770 回答