我猜你正在使用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