我有一个自定义 UITableViewCells 的表格 View ,当它们被触摸时会展开和收缩(以显示信息)。不幸的是,根据交互的位置,某些单元格的分隔符(在单元格框架的顶部/底部)会消失。它使它们看起来好像两个单元格合二为一。
以下是我认为相关的代码(如果需要更少/更多,请告诉我):
- (void) tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath {
DynamicTableViewCell *selectedCell = (DynamicTableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
Trinomial *currentTri = [self.fetchedResultsController objectAtIndexPath:indexPath];
switch (currentTri.cellDetailActive) {
case YES:
selectedCell.detailLabel.hidden = YES;
[selectedCell setSelected:NO animated:YES];
currentTri.cellDetailActive = NO;
[tableView beginUpdates];
[tableView endUpdates];
break;
case NO:
selectedCell.detailLabel.hidden = NO;
[selectedCell setSelected:NO animated:YES];
currentTri.cellDetailActive = YES;
[tableView beginUpdates];
[tableView endUpdates];
break;
default:
NSLog(@"Serious application error. BOOLEAN contains no value in -[tableView:didSelectRowAtIndexPath:]");
break;
}
}
这里是设置行高的方法:
- (CGFloat) tableViewUITableView *)tableView heightForRowAtIndexPathNSIndexPath *)indexPath {
Trinomial *tri = [self.fetchedResultsController objectAtIndexPath:indexPath];
if (!tri.cellDetailActive)
return 55;
else
return 110;
}
我的问题的图片发布在下面。过程是单元格拥有一个属性,该属性告诉是否显示详细信息,并且我使单元格高度发生变化(通过 -[beginUpdates:] 和 -[endUpdates:] ),然后根据最后的显示模式隐藏或取消隐藏某些 View 。
如果我需要澄清/详细说明任何信息或提供任何其他 Material ,请告诉我。提前感谢您的帮助!
编辑:
不知何故,我将此方法的两个版本合并在一起,其中代码不正确。 -[tableView:didSelectRowAtIndexPath:] 应该如何工作是从核心数据获取结果 Controller 接收到一个对象,其中包含一个名为 cellDetailActive 的属性,该属性检查单元格是否扩大与否。该单元格没有 cellDetailActive 属性,抱歉。
编辑#2:
好的,我向 Apple Bug Reporter (#17295019) 提交了一个名为“表格 View 单元格分隔符随着单元格高度变化而消失”的错误。好吧,这个标题有点误导,因为 Apple 的开发人员回复我说因为 -[setSelected:animated] 直接在表格 View 单元格上被调用,所以我遇到了分隔符问题。相反,建议在我的 switch 语句中使用 [tableView selectRowAtIndexPath:animated:scrollPosition] 以及 [tableView deselectRowAtIndexPath:animated] 。
Best Answer-推荐答案 strong>
我认为这只是一个错误。我解决它的方法是将分隔符设置为 None 并绘制我自己的单元格背景,其中包括一条用作分隔符的线。
关于ios - UITableView 分隔线在显示中不稳定,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/23283032/
|