2011-07-13 39 views
0

我有一個自定義TabViewController添加子視圖到當前視圖取決於什麼UITabBarItem被選中。對於不同的子視圖,我模擬了一個導航欄和一個選項卡欄,以便子視圖在顯示時匹配格式。包含UILabel的一個子視圖顯示正常,但UITableView的子視圖與UITabBar重疊。但是在界面生成器中,我將UITableView的大小設置爲不切斷UITabBar。iPhone UITableView與UITabBar重疊時顯示它作爲子視圖

添加子視圖中TabViewController

[self.view addSubview:subViewController.view]; 

SubView in the interface editor SubView on the Emulator

+0

您是否在使用IB或代碼作爲視圖?看起來像你正在使用兩個! – Legolas

+0

我正在使用IB只是更改代碼中的控制器 –

+0

如果是這樣的話,那麼你就不需要這個了。 '[self.view addSubview:subViewController.view];'如果它們在IB中正確連接,應該這樣做。 – Legolas

回答

1

您還沒有提供足夠的信息來確定,但我認爲您正在將表視圖添加到錯誤的視圖中。假設self是您的UITabBarController子類,您將在覆蓋整個屏幕(包括選項卡欄)的視圖中添加自定義視圖。

相反,你應該添加自定義視圖到選定的視圖控制器的看法:

[self.selectedViewController.view addSubview:subViewController.view]; 

這將限制要添加到標籤欄控制器的內容區域的東西,並不會重疊標籤酒吧。

雖然我不確定你用這種方法試圖完成什麼:看起來將subViewController添加到UITabBarController管理的視圖控制器集合會更有意義,而不是混淆視圖層次結構。

另外,從一個nib加載視圖然後在代碼中操縱它們本身並沒有什麼錯誤。 「混合風格」不是問題。

0

由於萊格拉斯說,好像你在這裏混合風格。鑑於這聽起來像你需要從代碼推,你可以嘗試的對象完全實例從代碼,例如:

UITableView *table = [[UITableView alloc] initWithFrame:CGRectMake(x, y, width, height)]; 
table.delegate = self; //or whatever the delegate is 
table.dataSource = self; //or wherever the datasource is 

...然後將它添加到你需要的任何視圖。

如果這一切都失敗了,仔細檢查你的筆尖,並確保你有正確的選項設置是否顯示標籤欄,導航欄等,因爲這將影響的大小。

相關問題