2013-02-19 47 views
0

後,我試圖改變框的大小和位置兩個UITableViews是一個UIViewController是對的UINavigationController的RootViewController的內部,一個UINavigationController改變一個UITableView的框架。的風景被

我希望在用戶操作時更改幀大小。我把一切都建立並根據用戶的操作將下面的代碼執行時:

CGRect firstTableFrame = [myTableView frame]; 
firstTableFrame.size.height = 290; 
[self.myTableView setFrame:firstTableFrame]; 
NSLog(@"%f",self.myTableView.frame.size.height); 
[self.myTableView reloadData]; 

我可以確認的NSLog輸出290但是,沒有顯示屏幕上更改。我找到了一個答案就在這裏,我認爲可能解決這個問題(不選中自動版式)的文件的.xib但是這會導致其他各種佈局問題與我的.xib當我運行它。

有沒有辦法解決這個問題?

回答

0

這是因爲導航控制器有一個視圖,該視圖持有您添加到視圖中的視圖(您的表視圖)。你必須適當地調整視圖的大小

+0

我明白了。那麼我會怎麼做這個觀點呢?它的大小不需要改變,只是其視圖內容的大小(即tableviews)。我假設你的意思是我需要以某種方式讓該視圖知道我正在改變它的子視圖,或者可能通過該視圖來做到這一點。任何進一步的意見將不勝感激。 – IkegawaTaro 2013-02-19 05:50:25

+0

您可以採用rootController.view並將其邊界設置爲大於兩個表視圖所需的大小,或者將其設置爲設備的屏幕大小。你也可以採取你viewcontroller的視圖的超級視圖和調整 – Siby 2013-02-19 16:04:02

+0

我想我需要澄清,正在調整大小的表視圖變得越來越小。它的高度從440到290.在這種情況下,任何超級觀點的界限都不需要改變? – IkegawaTaro 2013-02-20 05:47:06

0

我能夠通過轉到viewcontroller的.xib文件並在File Inspector窗格中取消選中「use autolayout」來解決此問題。如果未選中,約束將被刪除,我可以通過編程來調整框架的大小和位置。