2010-10-21 90 views
0

我分類了UITableViewController並將其稱爲FeaturedGamesViewController。好吧,我也有一個導航控制器,我將這個FeaturedGamesViewController作爲根加入。你在App Delegate中做的所有漂亮標準的東西。如何以編程方式調整UI表格視圖控制器的UI表格視圖?

另請注意,沒有爲FeaturedGamesViewController創建NIB文件。只是繼承UITableViewController並調用initWithStyle來設置表格的樣式並自動設置數據源和委託以及大小。數據源和委託顯然設置爲FeaturedGamesViewController。

- (id)init 

{
//調用父類的指定初始化 [超級initWithStyle:UITableViewStyleGrouped]。

}

OK,你看,我已經設置爲 「分組」 表的大小。在我的iPad的橫向視圖中,它的頂部,左側和右側有大約20像素的空間(對不起,不能發佈屏幕截圖,因爲我是新手,系統不會讓我累積一定數量的點)

我不想那個!這是景觀,所以我希望它填補了導航欄和下面標籤欄之間的所有空間。更糟糕的是,我僞造了一個帶有自定義UITableViewCell的網格,但左右兩側的空間使得它如此,以至於如果您單擊該空間,整個行就會被選中,因此背叛了這是網格的感覺。

現在我想我應該調整viewDidLoad中的表視圖或其他東西,但我不知道如何。由於潛在的內存泄漏(可能會重置已設置的dataSource和delegate和autoresizeMask屬性),我無法執行initWithFrame,因此必須有setter或某些東西來將tableview的原點重置到導航欄的下方並填充整個屏幕尺寸爲1024X748。你如何動態重置表視圖的大小?

然後我非常沮喪,我決定通過Nib文件來做到這一點,這樣我可以設置橫向的方向,並設置模擬的導航和選項卡欄,並用表格視圖填充剩餘的空間。這工作!如果你很好奇如何創建與筆尖表視圖你已經子類化後的UITableViewController沒有一個筆尖,這裏是如何:

http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/CreateConfigureTableView/CreateConfigureTableView.html#//apple_ref/doc/uid/TP40007451-CH6-SW10

權「創建表視圖編程」之前去的段落。

好的,當我這樣做時,我的「網格」景觀視圖看起來像我想要的那樣填滿了頂部導航欄和底部標籤欄之間的整個空間。

我擺弄了這一些,我發現在我的「非筆尖」版本(有問題的版本)中,我將表格樣式設置爲「分組」。當我將它改爲「普通」時,它就起作用了!但是,這裏是這樣的:在筆尖版本中,「分組」或「普通」給出了佔據整個空間的表格的正確佈局。那麼是什麼給了?

很抱歉的長期問題,但我想我所問的是:

1)你如何編程方式重置表視圖的大小,而不會引入潛在的內存泄漏或影響已經爲您設置了其他屬性(如:dataSource,委託,autoResizeMask - 這些都是爲你設置的,因爲你的子類UITableViewController)?

2)你如何做到這一點對任何一般的觀點? 3)爲什麼「普通」樣式會根據需要填充佈局,而「分組」樣式會給出奇怪的佈局。請注意,這在Nib版本中不是問題。

感謝您的耐心等待!

回答

0

回答爲(2),並且因此對於(1):

一個UIView的幀是在它的父的局部座標系。使視圖適應它的父的常用方法是

CGRect bounds = [[self superview] bounds]; 
[self setFrame:bounds]; 

你應該這樣做內layoutSubviews

+0

如果您有自定義視圖(或者我認爲),則只能在layoutSubviews中繪製東西。我沒有自定義視圖。我有UITableViewController的子類,所以我所有我都可以訪問的方法是loadView,viewDidLoad等。我試圖在viewDidLoad中這樣做,它沒有工作。我應該提及,我有一個選項卡視圖控制器,其中包含每個選項卡導航控制器的ptr。而這些導航控制器有我的自定義UITableViewController作爲根!不好:http://fumpr.com/share-6083_4CBFB8F3.html好:http://fumpr.com/share-58A4_4CBFB9AE.html – user482393 2010-10-21 03:56:09

相關問題