在viewDidAppear中的UITableView中设置rowHeight

时间:2011-12-13 22:29:05

标签: cocoa-touch uitableview

这是当前的工作代码。

但我猜这应该更简单。

如果我使用注释代码,我的身高会有所不同。

有人提出一些建议吗?

- (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] ;
}

1 个答案:

答案 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:中执行此操作将导致表格的行高在视图演示动画完成时明显跳转。