不为所有部分调用cellForRowAtIndexPath

时间:2012-03-28 20:47:43

标签: ios uitableview

我有一个UITableView有五个部分。正如标题描述的那样,仅为前四个调用了cellForRowAtIndexPath。已经建立了有关数据源和委托的所有连接。此外,我的numberOfSectionsInTableView清楚地返回5.从cellForRowAtIndexPath中打印出的节数显示正确的数字,从而确认没有为所有节调用cellForRowAtIndexPath。到底是怎么回事?我很难找到这个问题的答案,但找不到答案。如果已经回答,请原谅我并指出正确的方向。

我的cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [theTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    switch (indexPath.section) {
        case 0:
            cell.textLabel.text = ticket.description;
            break;
        case 1:
            cell.textLabel.text = ticket.ticketStatus;
            break;
        case 2:
            cell.textLabel.text = ticket.priority;
            break;
        case 3:
            cell.textLabel.text = ticket.customerOfficePhone;
            break;
        case 4: {
            //This never ever gets executed
            Comment *comment = [ticket.comments objectAtIndex:indexPath.row];
            cell.textLabel.text = comment.commentContent;
            break;
        }
    }

    return cell;
}

我的numberOfSectionsInTableView:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 5;
}

我的numberOfRowsInSection:

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

    if (section == 4) {
        numberOfRows = [ticket.comments count];
    }
    else {
        numberOfRows = 1;
    }

    return numberOfRows;
}

任何建议都表示赞赏。提前谢谢。

2 个答案:

答案 0 :(得分:5)

阿公顷!我想到了。我忘记了我已经为我的表视图硬编码了帧,并将其添加为子视图,并禁用了滚动视图。不幸的是,滚动视图和tableview在高度方面都太小而无法容纳第五个部分,我认为这是除了第五个部分之外的所有部分都要调用cellForRowAtIndexPath的原因。重新调整我的表格视图的高度和滚动视图更大一点已经解决了我的问题。

答案 1 :(得分:0)

将此视为评论。实际上我不能在评论中做到这一切。

修改

有关 [ticket.comments count];不是零意味着什么是计数?  检查cellForRowAtIndexPath:方法中的if条件是否仅打印ticket.comments数组if section == 4

if(indexPath.section == 4){

NSLog(@"Ticket Array:%@",ticket.comments);

}

另一个问题:

实际上ticket.comments是什么?如果那是一个数组,那么具有“Comment”对象还是其他什么?如果它有comment object,请在案例4 中尝试此操作。

case 4:
         {
            Comment *comment = (Comment *)[ticket.comments objectAtIndex:indexPath.row];
            cell.textLabel.text = comment.commentContent;
            break;
         }

我希望这条评论可以帮到你。