4

My cells all have varying heights, determined by text entered by the user.

Whatever height the last cell takes on seems to determine (change) the height for all remaining blank cells.

It doesn't appear that heightForRowAtIndexPath is getting called for these remaining, empty cells, nor is CFRAIP.

Does anyone know how to fix this or why it is happening?

4

2 回答 2

12

将此代码放在放置Tableview的viewController的viewDidLoad中。

self.tableView.tableFooterView = [[UIView alloc] init];

于 2013-03-08T13:26:57.023 回答
0

我也遇到了问题。这让我很沮丧。经过一番考虑,我认为它可能是 tableview 的一个特性,它显示空白单元格。使用空白单元格的最后一个单元格高度是合理的。否则,选择使用什么高度?
我认为显示黑色单元格是不可接受的。如果你像我一样不喜欢这种风格,你可以试试这个去掉空白单元格:

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 

或者

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
//then add view for separator line by yourself

或者

    UITableView *tableView = [[UITableView alloc] initWithFrame:self.tableView.frame style:UITableViewStyleGrouped];
tableView.backgroundColor = self.tableView.backgroundColor;
self.tableView = tableView;

如果您必须显示空白单元格并控制高度,也许这是添加额外单元格的最简单方法/解决方法。例如:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
   return self.dataArray == nil || self.dataArray.count == 0 ? 1 : self.dataArray + 1;
}

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    if(indexPath.count == self.dataArray.count){ //the last cell
       cell = [[UITableViewCell alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 50)];
    } else {
       cell = .... //as uausal
    }

    return cell;
   }

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    if(indexPath.count == self.dataArray.count){
      return 50;
   } else {
    return xxx; //as usual
   }
 }

现在我们可以控制任何高度!

希望它可以帮助你。

您也可以参考链接:如何修改普通 UITableView 中“空”单元格的外观?

于 2015-07-24T17:52:46.067 回答