cellForRowAtIndexPath 只被调用一次

Posted

技术标签:

【中文标题】cellForRowAtIndexPath 只被调用一次【英文标题】:cellForRowAtIndexPath is getting called only once 【发布时间】:2013-07-17 18:04:21 【问题描述】:

我不知道我做错了什么,但是表格视图的 cellForRowAtIndexPath 方法只被调用一次。

这是我的代码:

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

     NSLog(@"--->%d",[collaboratoresdata count]);

    return [collaboratoresdata count];


当我的collaboratoresdata 数组被填满时,我会调用[_collaboratortblView reloadData] 来重新加载表格视图。

我在NSLog(@"--->%d",[collaboratoresdata count]); 中成功获取了3,但cellForRowAtIndexPath 只被调用了一次。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    static NSString *CellIdentifier = @"Cell";
    // add a placeholder cell while waiting on table data

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease];
    
    cell.selectionStyle=UITableViewCellSelectionStyleNone;


    NSLog(@"tableView:%d",[indexPath row]);// i am getting 0 here than after its not calling

    return cell;


【问题讨论】:

屏幕上显示什么? 在你的 NSLog 之后写 cell.textLabel.text = @"hi"; @HotLicks 它只显示数组的第一个元素。 @AbdullahShafique 虽然我的数组有 3 个值,但它只显示了一个单元格。 是的。并且由于 tableView 仅在实际显示单元格时才调用 cellForRowAtIndexPath:,因此了解您是否可以滚动非常重要。如果单个单元格高于整个 tableView tableView:cellForRowAtIndexPath: 将被调用一次。 【参考方案1】:

检查单元格的高度我认为这是问题

【讨论】:

【参考方案2】:
please try to set height of cell manually(custom). So, if problem of cell height then it will be resolved. below method set cell height 30 pixels.

#pragma mark- TableView delegate Methods
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
 
return 30.0f;

【讨论】:

以上是关于cellForRowAtIndexPath 只被调用一次的主要内容,如果未能解决你的问题,请参考以下文章

被调用者分配被调用者释放

cellForRowAtIndexPath:XCode 模板是不是正确?

从 cellForRowAtIndexPath 中调用 heightForRowAtIndexPath?

cellForRowAtIndexPath:reloaddata 未调用

performFetchWithCompletionHandler 只被调用

tableView:cellForRowAtIndexPath 的保留计数: