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 滚动的主要内容,如果未能解决你的问题,请参考以下文章