这是当前的工作代码。
但我猜这应该更简单。
如果我使用注释代码,我的身高会有所不同。
有人提出一些建议吗?
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
TableViewCell *cell = (TableViewCell *)[[self tableView]dequeueReusableCellWithIdentifier:CellClassName];
// TableViewCell *cell = [[[TableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellClassName] autorelease];
if (!cell)
{
NSArray *topLevelItems = [cellLoader instantiateWithOwner:self options:nil];
cell = [topLevelItems objectAtIndex:0];
// cell = [[[TableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellClassName] autorelease];
}
NSLog(@"cell height %f", cell.bounds.size.height);
[[self tableView] setRowHeight:cell.bounds.size.height] ;
}
答案 0 :(得分:0)
是的,你绝对可以简化它。只需调用您自己的-tableView:cellForRowAtIndexPath:
实现,并使用您从中获取的单元格,即
UITableView *table = self.tableView;
NSIndexPath *index = [NSIndexPath indexPathForRow:0 inSection:0];
UITableViewCell *cell = [self tableView:table cellForRowAtIndexPath:index];
[table setRowHeight:cell.bounds.size.height]
Voilà:没有更多重复的代码。
另一方面,如果您的视图控制器将显示动画,您可能希望在-viewDidLoad
或-viewWillAppear:
中执行此操作。在-viewDidAppear:
中执行此操作将导致表格的行高在视图演示动画完成时明显跳转。