2013-01-22 25 views
0

我有一個名爲DashBoardViewController的UIViewController充當UITabBar的代理。在它的xib中,我放置了一個帶有3個UITabBarItem的UITabBar。UITabBar UIView不擴展到完整

每個項目激活不同的視圖控制器,我們姑且稱之爲ViewController1,ViewController2,ViewController3

DashBoardViewController是爲了顯示ViewController1並選擇加載第一條,所以在我initWithNibName我有什麼如下:

... 
ViewController1* vc = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil]; 
[self.view addSubview:vc.view]; 
self.currentViewController = vc; 
... 

我實現有得UITabBarDelegate如下:

if (item == viewController1Item) { 
    ViewController2 *vc2 = [self.childrenControllers objectAtIndex:1]; 


    [self.currentViewController.view removeFromSuperview]; 
    [self.view addSubview:vc2.view]; 
    self.currentViewController = vc2; 


} ... 

問題 第一個UITabBarItem中的View Controller始終按預期工作,將其擴展到w視圖的完整大小。 但是,在第二個和以後的選項卡中,這不會發生:視圖不會擴展。這顯示了,例如,我是否將選項卡與ViewController2 XIB中的底部對齊:在UITabBarItem中查看時,這不會位於底部。

注意 請注意,這是不相關的廈門國際銀行:如果我顛倒ViewController1和ViewController2,這將是ViewController1的一個失敗的延伸。它與UITabBarItem有關。

理念 可能,這取決於由當我打電話了DashBoardViewController的initWithNibName我addSubview的方式。但我找不到解釋這一點的方法。

其他詳情 所有的XIB都設置爲「Size = none」。

回答

1

我可以」你真的沒有看到你的XIB安裝方式,但我可以提出一些建議。

你試圖通過刪除&添加子視圖到DashBoardViewController來實現的行爲應該真的由UITabBarController。這提供了一個UITabBar,av瀏覽您的內容並處理在UIViewControllers之間切換的邏輯,同時保持佈局清晰併成爲SDK的一部分。

如果由於某種原因,你不能或不想使用的UITabBarController,我建議您DashBoardViewController實施viewWillLayoutSubviews方法,像這樣:

- (void)viewWillLayoutSubviews 
{ 
    if(self.currentViewController) 
    { 
     self.currentViewController.view.frame = self.view.bounds; 
    } 
} 

也許還嘗試添加self.currentViewController.view.frame = self.view.bounds;行之後,您也交換了ViewControllers,以獲得更好的效果。這將確保當前ViewController視圖的框架始終大小設置爲填充DashBoardViewController視圖的邊界。

雖然這不是'正確'的方法,但如果可以的話,我真的推薦使用UITabBarController,因爲你不知道UITabBarController有多少,你最終會重新實現if你開始滾動你自己的控制器。

任何進一步的問題很可能與你的子ViewControllers的內部佈局有關,而不是它們在DashBoardViewController視圖中的大小/位置。

+0

這裏的(部分)複雜是我的DashBoardViewController駐留在UINavigationController中,我假設由於我需要在單個Tab中共享一些視圖,所以最好將它們放在DashBoardViewController中。 – puntofisso

+0

我按照你的建議使用了一個標準的UITabBarController,並在需要時顯示子視圖爲模態。實際上,這種方式看起來好多了。謝謝你的幫助! – puntofisso

0

在你的XIB文件,確保您的設置靈活的高度,堅持到頂部和底部,這種方式的UITableView將始終具有相同的高度4" 顯示

enter image description here

+0

是的,我有這樣的設置,但我仍然有同樣的問題:例如,在UITableView下面留下了一些空間。 – puntofisso

+0

反正它有點不同。我正在更新這個問題。 – puntofisso