【发布时间】:2009-07-21 23:10:39
【问题描述】:
我有一个自定义 UIView 子类,我正在尝试将其用作我的分组 tableview 部分之一的标题。我在 tableViewController 中保存了该视图的一个实例,并使用它来返回标题部分的高度以及视图本身。问题是,在 reloadData 调用过程中,该实例变量以某种方式从 UIView 更改为 CALayer,这会导致崩溃,因为该实例具有返回其预期高度的特殊方法。这是崩溃的代码:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
{
return [self.dataHeader frameHeight];
}
return 0.0f;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (section == 0)
{
return self.dataHeader;
}
return nil;
}
我在heightForHeaderInSection方法的if块中第一次返回时设置了一个断点,它命中了4次;前三个成功返回 dataHeader ,而第四次显示它是一个 CALayer 并因 dosNotRecognizeSelector 异常而崩溃(如果这有所不同,我的 tableview 有 2 个部分)。发生这种情况有什么原因吗?有没有办法阻止它?
【问题讨论】:
标签: iphone objective-c uitableview uikit