如何在IB中构建TableView时降低其高度?
我想添加一个视图到我的屏幕底部。控制器是一个UITableViewController,我该如何缩小tableView并在tableview的底部添加一个额外的视图?如何在IB中构建TableView时降低其高度?
我试过在不同的地方设置self.tableView的框架(viewDidLoad,viewWillAppear等),但没有任何反应。 tableView是由IB创建的,而不是编程的。
我已经尝试添加页脚到我的表格视图,但这不是我想要的,因为页脚实际上滚动了,我想要在屏幕底部的静态非移动视图。
您想要更改-loadView方法。不是viewDidLoad或viewWillAppear。这将允许您使用您的tableview进行其他配置,即使它是在IB中创建的。
- (void)loadView {
[super loadView];
CGRect titleRect = CGRectMake(0, 0, 300, 40);
UILabel *tableTitle = [[UILabel alloc] initWithFrame:titleRect];
tableTitle.textColor = [UIColor blueColor];
tableTitle.backgroundColor = [self.tableView backgroundColor];
tableTitle.opaque = YES;
tableTitle.font = [UIFont boldSystemFontOfSize:18];
tableTitle.text = [curTrail objectForKey:@"Name"];
self.tableView.tableHeaderView = tableTitle;
[self.tableView reloadData];
[tableTitle release];
}
我不是说你不能这样做,否则,但你可能不希望这种情况UITableViewController
。你仍然可以让你的视图控制器实现UITableViewDelegate
和UITableViewDataSource
,但将一个香草UIView
放入你的笔尖,在其中放置一个UITableView
。然后,确保将视图出口设置为包含您的表格的UIView
。这具有允许您在IB内创建额外视图的效果。我只是试过这个,它似乎工作。
由于使用SplitViewController进行iPad开发,viewController必须是TableViewController – erotsppa 2010-03-23 23:31:28
我不知道该怎么做,在IB,但这样做在代码的方式是这样的:
- (void) loadView
{
UITableView *tv = [[UITableView alloc] initWithFrame: rect
style: UITableViewStyleGrouped];
// finishg configuring table view
self.view = tv;
[tv release];
}
试图做到这一点在两个阶段 - 第一的风格,然后框架或框架第一,然后风格 - 他们都没有工作。
我猜你正在使用UINavigationController。将控制器推入导航堆栈时,UINavigationController会将其视图调整为全屏,忽略您在IB中定义的几何和自动调整行为。
这个调整大小似乎发生在viewWillAppear:之后。在过去,我调用了[super viewDidAppear:]之后,我已经成功调整了表视图的大小并在viewDidAppear中添加了兄弟视图。不过,这有点危险,因为Apple可以通过改变UINavigationController在幕后工作的方式来打破它。
更安全的选择是将视图控制器推到控制包装视图的导航堆栈上。然后添加你的UITableView和它的兄弟作为该包装视图的子视图。关于这个选项的烦人的事情是,你可能会想要使用嵌套的UITableViewController来管理你的非全屏幕表格视图,但是UIViewController的文档说它仅用于管理全屏视图。如果你决定忽略这个警告并嵌套你的视图控制器,你会发现viewWill/DidAppear/Disappear不会在嵌套控制器上被调用,所以你必须从你的包装视图控制器手动委派这些方法。缺乏对嵌套控制器的支持是我对UIKit最大的宠儿之一,我竭尽全力去设计它。
如果您想要使用视图控制器仅适用于全屏视图,则可以推送普通视图控制器来控制全屏包装视图,手动实现视图控制器中的所有UITableViewDataSource和UITableViewDelegate方法,以及将其设置为您的表格视图的代表。
这很有趣,我从来没有注意到文档中的那一行。我使用UIViewControllers来查看小于屏幕所有时间的视图,但如果视图相对简单,我通常会将控制器逻辑折叠到视图本身中。 哦,还有+1的“脚趾线”。 – Amagrammer 2010-03-24 13:33:20
由于使用SplitViewController进行iPad开发,viewController必须是TableViewController – erotsppa 2010-03-24 17:03:45
将视图添加到页眉/页脚视图并不是我想要的,因为该视图将随表格一起滚动,我希望静态的东西留在那里,无论您滚动到何处。我试过在loadView中设置框架,当然它不起作用。它总是回到最大化的高度。 – erotsppa 2010-03-23 22:36:18