【问题标题】:iPhone: UITableView scrolling under Tab BariPhone:标签栏下的 UITableView 滚动
【发布时间】:2009-11-13 06:50:49
【问题描述】:

我有一个 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 中的视图)在 Simulated Interface Elements 部分中将 Bottom Bar 设置为“Tab Bar”。

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

知道我可能缺少什么,或者从哪里开始寻找吗?


这是我当前的 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];

}

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

【问题讨论】:

    标签: iphone objective-c cocoa-touch uitableview


    【解决方案1】:

    试试这个

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

    【讨论】:

    • 我将该代码放在 viewDidLoad 中,但它似乎没有做任何事情。有趣的是,如果我把 NSLog(@"Frame height: %d", frame.size.height);在递减之前,它会打印 0。
    • 好的。使 UIView 而不是 UITableView 成为控制器的主视图。并将您的表格视图和标签栏作为子视图添加到您的主 UIView。
    • 这周我没能参与这个项目。一旦我回到它,我会尝试并让你知道结果如何。感谢您的帮助!
    【解决方案2】:

    你应该把 NSLog(@"Frame height: %f", frame.size.height);而不是 %d 然后 NSLog 可以打印 0 以外的数字

    【讨论】:

      【解决方案3】:

      尝试在 viewWillAppear 中设置表格视图的框架:viewDidLoad 中仍未定义框架。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-08
        • 1970-01-01
        • 2011-05-01
        • 1970-01-01
        • 2016-06-20
        • 1970-01-01
        • 2019-04-15
        相关资源
        最近更新 更多