iPhone:标签栏下的 UITableView 滚动

Posted

技术标签:

【中文标题】iPhone:标签栏下的 UITableView 滚动【英文标题】:iPhone: UITableView scrolling under Tab Bar 【发布时间】: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”

【问题讨论】:

【参考方案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 中仍未定义框架。

【讨论】:

以上是关于iPhone:标签栏下的 UITableView 滚动的主要内容,如果未能解决你的问题,请参考以下文章

标签更改后导航栏下的表格视图

iPhone:在导航栏下隐藏自定义视图

导航栏下的 CollectionView 内容

iOS7 和 iOS8 中的 UITableView contentInset 不同

自动布局忽略iOS7上的UITabBar(栏下的内容)

旋转后 UINavigationController 中的 UITableView 在导航栏下