iPhone:UITableView在Tab Bar下滚动

时间:2009-11-13 06:50:49

标签: iphone objective-c cocoa-touch uitableview

我有一个UITableView,我无法弄清楚如何正确的尺寸。

我的应用程序基于Tab Navigator模板。一个选项卡的视图加载包含导航控制器的NIB。导航控制器的根视图控制器将其类设置为没有相应NIB的UITableViewController。 UITableViewController声明为:

@interface MyRootViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {

问题是表格视图没有“结束”在屏幕上的正确位置。完全向下滚动时,标签栏会切断最后一个单元格中大约一半的文本:

alt text http://img.skitch.com/20091113-djd5ib5uktnc8gqq5e7798cqjb.png

所有NIB文件(对于Tab Navigator和Navigation Controller中的视图)都在模拟界面元素部分中将Bottom Bar设置为“Tab Bar”。

我已经尝试了几种在UITableViewController的viewDidLoad方法中为self.view.bounds设置新CGRect的变体,在调用super之前和之后都无效。

知道我可能会遗漏什么,或者从哪里开始寻找?


这是我当前的viewDidLoad(减去一些完全不相关的行):

- (void)viewDidLoad 
{
    self.title = @"Table View Controller";


    CGRect frame = self.tableView.frame;
    NSLog(@"Frame height: %d", frame.size.height);
    frame.size.height -=100;
    [self.tableView setFrame:frame];

    [super viewDidLoad];

}

TheCGRect位似乎没有做任何事情,日志输出是“Frame height:0”

3 个答案:

答案 0 :(得分:1)

试试这个

CGRect frame = self.tableView.frame;
frame.size.height -= 50; //play around this value
[self.tableView setFrame:frame]; 

答案 1 :(得分:0)

你应该把NSLog(@“帧高:%f”,frame.size.height);而不是%d,那么NSLog可以打印0以外的数字

答案 2 :(得分:0)

尝试在viewWillAppear中为表视图设置框架:尚未在viewDidLoad中定义框架。