2011-02-17 67 views
0
self.tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain]; 

当我有UINavigationController和UITabBarController时,如何从视图中获取适当的大小?UINavigationController和UITableView框架问题

为了避开它,我必须做的:

CGRect frame = self.view.frame; 
frame.origin.y -= [UIApplication sharedApplication].statusBarFrame.size.height; 
tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain]; 

我总是不得不手动设置我的意见/ tableviews的高度,以适应UINavigationController的内部,这真是烦人

这似乎有点奇怪,为什么它不会自动减去状态栏高度?这是默认的样式,而不是透明的状态栏。

感谢

更新:如果我的Alloc了的tableView init方法后,只需设置帧self.view.frame工作正常。 Wuzzup智慧?

回答

1

在init方法之前设置UINavigationController的框架将不起作用,因为UINavigationController尚未加载并显示。该框架仅在控制器及其视图被加载后才被设置。

您应该在UINavigationController的viewDidLoad方法中设置您的表(以及所有类似的初始化)。如果你这样做,你就不会看到这类问题。

+0

或者,在加载视图后,调用setNeedsLayout可以解决问题。 – 2011-02-18 02:27:06