我正在尝试根据特定条件将特定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
答案 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拒绝的理由。