TableViewCell Height引起的警告

时间:2015-09-02 07:16:23

标签: ios objective-c

我正在尝试根据特定条件将特定tableview单元格的高度设置为零。我已经使用了tableview委托方法:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="ThisClass">
  <div>#1</div>
  <div>#2</div>
  <div>#3</div>
  <div>#4</div>
  <div>#5</div>
  <div>#6</div>
  <div>#7</div>
</div>

<button onclick="hiderows()">Hide rows</button>
<button onclick="showrows()">Show rows</button>

它可以正常工作,隐藏细胞。但是,我得到一个警告,我对这个应用程序未获批准感到厌倦。以下是日志:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 1) {
        return 0;
    }
    return 45.0f;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// Only indicating the necessary code to hide the cell 
       if (indexPath.row == 1) {
          cell.hidden = YES;
       }
}

注意:我正在使用自定义tableviewcell

2 个答案:

答案 0 :(得分:1)

好的,如果由于某种原因无法从数据源中删除对象,那么我认为您需要在数据源方法中小心处理它,而不是将rowHeight设置为0到&# 34;隐藏细胞&#34;。例如,如果你想隐藏&#34;第一个单元格,您可能需要执行以下操作:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.dataSource.count - 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    object = self.dataSource[indexPath.row + 1];
    ......
    return cell;
}

答案 1 :(得分:0)

控制台输出告诉我,单元格包含一个标签,其顶部和底部被限制为与单元格的内容视图有4个点的间隙。当单元格的高度为零(或任何小于8个点)时,标签需要具有负高度以满足这些约束。这是不允许的,因此Autolayout需要忽略至少一个约束。它将首先忽略具有最低优先级的约束。但是,在您的情况下,顶部和底部约束的优先级均为1000.Autolayout通过破坏其中一个约束并记录警告来处理此歧义。

您可以通过将其中一个约束的优先级更改为999来解决此问题。您还可以在Interface Builder中测试修复:将单元格的高度调整为零,如果出现红色错误,则您的约束在零处不明确高度。

我不相信这会成为AppStore拒绝的理由。