iOS - UITableView在显示后更新

时间:2014-03-28 19:20:41

标签: ios objective-c uitableview uistoryboard

我有一个带有两个表的视图。此视图定期将数据加载到其中,我希望第一个表是显示所有项目所需的高度,以便表格不必滚动。我有以下代码来完成此任务:

-(void)viewDidAppear:(BOOL)animated{
   table1.frame = CGRectMake(table1.frame.origin.x, table1.frame.origin.y, table1.frame.size.width, tableHeight1);
   table2.frame = CGRectMake(table2.frame.origin.x, table1.frame.origin.y + 20 + tableHeight1, table2.frame.size.width, tableHeight2);
    if(tableHeight2 + table2.frame.origin.y  > 550){
        tableHeight2 = 530 - table2.frame.origin.y;
    }
    table1.frame = CGRectMake(table1.frame.origin.x, table1.frame.origin.y, table1.frame.size.width, tableHeight1);
    table2.frame = CGRectMake(table2.frame.origin.x, table1.frame.origin.y + 25 + tableHeight1, table2.frame.size.width, tableHeight2);

}

有效。完成所有操作后,第一个表的大小相应,第二个表也在其下面。

问题在于视图首先加载表格的大小,因为它在故事板中布局,然后一切都完成后,它会相应地调整大小。因此,用户在调整到适当的高度之前,会看到部分表或半空表两秒钟。

我尝试将代码粘贴到viewDidLoad中,放入layoutSubviews中,它会破坏或根本不调整表的大小。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您希望显示表格视图,已经是正确的尺寸,您可以尝试以编程方式将其添加到您的视图中,即

tableView = [[UITableView alloc] initWithFrame:frame]; //your custom frame

涉及更多代码,但也有更多控制权。