我有UITableView
个自定义UITableViewCell
,我使用indentationLevel
将内容移到右侧。
在iOS 7中,一切正常,但在iOS 8中,当我设置indentationLevel > 0
时,表格视图不会渲染单元格,界面会冻结。唯一的解决方案是退出应用程序。
如果我继续调试,我可以看到应用程序使用的内存不断增加,CPU占99%。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CustomCellReuseID";
TreeTableViewCell *cell = (TreeTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.delegate = self;
FolderSection *aFolderSection = self.dataSourceArray[indexPath.section];
FolderNode *aFolderNode = (FolderNode *)aFolderSection.folderNodes[indexPath.row];
cell.indentationWidth = 20.0f;
cell.indentationLevel = aFolderNode.level;
// set up the cell
return cell;
}
想法?
答案 0 :(得分:5)
似乎iOS> 6在调用缩进配置的方法之前放置视图。将CustomCell.swift中的代码更改为:
override func awakeFromNib() {
super.awakeFromNib()
self.indentationWidth = 30.0
self.indentationLevel = 0
}
override func layoutSubviews() {
super.layoutSubviews()
let indentPoints = CGFloat(self.indentationLevel) * self.indentationWidth
self.contentView.frame = CGRectMake(indentPoints, self.contentView.frame.origin.y,self.contentView.frame.size.width - indentPoints,self.contentView.frame.size.height)
}
适当地打电话给他们。然后在你的cellForRowAtIndexPath:
...
cell.indentationLevel = 1 // Your indentation level
答案 1 :(得分:0)
我认为您还有其他问题,indentationLevel
和indentationWidth
都可以按照预期在iOS 8中使用。
我会尝试:
删除调用以访问您的dataSource并将indentationLevel
分配给静态值(如果可行,则表示您遇到问题
与您的dataSource调试。)
使用vanilla UITableViewCell
确保您的TreeTableViewCell
子类不存在问题。
验证您的所有Storyboard设置是否正确(假设您正在使用Storyboard和单元原型)。事实上,确保您的原型单元格使用您出列的CellID(在您的情况下为CustomCellReuseID
)。