我猜你正在使用UINavigationController。将控制器推入导航堆栈时,UINavigationController会将其视图调整为全屏,忽略您在IB中定义的几何和自动调整行为。
这个调整大小似乎发生在viewWillAppear:之后。在过去,我调用了[super viewDidAppear:]之后,我已经成功调整了表视图的大小并在viewDidAppear中添加了兄弟视图。不过,这有点危险,因为Apple可以通过改变UINavigationController在幕后工作的方式来打破它。
更安全的选择是将视图控制器推到控制包装视图的导航堆栈上。然后添加你的UITableView和它的兄弟作为该包装视图的子视图。关于这个选项的烦人的事情是,你可能会想要使用嵌套的UITableViewController来管理你的非全屏幕表格视图,但是UIViewController的文档说它仅用于管理全屏视图。如果你决定忽略这个警告并嵌套你的视图控制器,你会发现viewWill/DidAppear/Disappear不会在嵌套控制器上被调用,所以你必须从你的包装视图控制器手动委派这些方法。缺乏对嵌套控制器的支持是我对UIKit最大的宠儿之一,我竭尽全力去设计它。
如果您想要使用视图控制器仅适用于全屏视图,则可以推送普通视图控制器来控制全屏包装视图,手动实现视图控制器中的所有UITableViewDataSource和UITableViewDelegate方法,以及将其设置为您的表格视图的代表。
将视图添加到页眉/页脚视图并不是我想要的,因为该视图将随表格一起滚动,我希望静态的东西留在那里,无论您滚动到何处。我试过在loadView中设置框架,当然它不起作用。它总是回到最大化的高度。 – erotsppa 2010-03-23 22:36:18