2010-01-16 27 views
3

我有一個使用標準UITabBarController構建的iPhone應用程序。這個應用程序是使用標準的XCode項目模板創建的。UITabBarController的子類,替換了TabBar並有顯示問題

現在,我有一個要求改變UITabBar看起來非常不同。我決定採取的方法是這樣的:

在我的AppDelegate

for (UIView *view in tabBarController.view.subviews) { 
    if([view isKindOfClass:[UITabBar class]]) { 
     view.hidden = YES; 
     break; 
    } 
} 

這個工程,使標籤欄隱藏。接下來,我分類了UITabBarController,並添加了一個UIToolbar以及一些自定義組件。在我的子類UITabBarController中,我設置了自己的代碼,以便在選擇其中一個自定義對象時,代碼只需調用[self setSelectedIndex:n]即可更新UI。

所以我基本上有一個UITabBarController,但我通過一個新的用戶界面來控制它。

問題是我的新組件不像正常UITabBar那麼高,UITabBarController似乎沒有自動調整視圖的大小。我其實會期待這種行爲,但我無法弄清楚如何更改UITabBarController的「內容框架」。有任何想法嗎?

+0

你可以嘗試「tabBarController.tabBar.hidden = YES」,這會容易得多。 – iwat 2010-02-03 09:05:39

+1

請注意,在Apple的UITabBarController類文檔中指出:「此類不適用於子類。」 – 2010-05-13 00:02:35

+0

如果您想使tabbarcontroller可以旋轉,則子類化是必需的。默認情況下,它不會將旋轉事件傳遞給其子控制器。 – futureelite7 2011-05-31 00:50:58

回答

0

解決了與下面的代碼:

[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 436)]; 

(我知道這個代碼有問題,順便說一句,並會回來困擾我在iPad或其它設備)。

1
  1. 檢查autoresizingMask屬性。
  2. 您是否期望它們通過向viewControllers視圖中添加項目來實現標籤欄?
+0

我不希望他們作爲標籤欄工作,因爲我已經將它們添加到viewController視圖。我希望他們展示,但我知道我必須編寫代碼才能使其發揮作用。 – marcc 2010-02-03 16:35:56