你在哪里设置UITableView的高度或框架? AwakeFromNib?

时间:2012-02-21 04:47:33

标签: ios uitableview

我的应用程序中有一个tableview,我在NIB中构建了一个tableview,我通过Size Inspector将高度设置为68.

我也在我的代码中执行以下操作。

- (void) viewDidAppear:(BOOL)animated
{
    self.tableView.frame = CGRectMake(0,0,320,68);
    self.tableView.scrollEnabled = NO;

}

- (void)viewDidUnload
{
    [super viewDidUnload];
}

- (void)awakeFromNib
{
    [self.tableView setBackgroundColor:[UIColor clearColor]];
    self.tableView.rowHeight = 68;
}

当我在模拟器或iPhone中运行应用程序时它看起来很好,因为该表只有68px高。如果我关闭应用程序(转到主屏幕)并重新打开它,表格不再只有68像素高,但它会占用整个屏幕。

我似乎无法让它一直保持68px?

除了我上面的问题,还有一个方法(awakeFromNib,ViewDidAppear等...),你应该始终只设置对象的大小或位置?

3 个答案:

答案 0 :(得分:1)

使用此方法设置高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 68;
}

答案 1 :(得分:0)

将您的代码放入viewWillApper中,这可能有效!

- (void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

self.tableView.frame = CGRectMake(0,0,320,68);
self.tableView.scrollEnabled = NO;
[self.tableView setBackgroundColor:[UIColor clearColor]];
self.tableView.rowHeight = 68;

}

答案 2 :(得分:0)

找到我自己的解决方案。每个Apple的解决方案是,如果您使用UITableView和其他子视图,则不要使用uitbalviewcontroller,因为tableview将始终尝试使用整个屏幕。解决方案是使用uiview作为uiviewcontroller的基础,然后在uiview中放置一个uitableview,并为uiviewcontroller提供管理tableview所需的委托方法。

所以请记住,如果你不想要一个完整的高度uitableview,那么不要使用带有菜单栏的uitableviewcontroller。