2011-03-16 78 views
2

因此,我開始使用iPad的標準Split View應用程序。左側爲根視圖,右側爲詳細視圖。細節視圖的頂部有一個工具欄。帶詳細視圖底部的工具欄/ tabbar的UISplitView

我想要添加的是一個標籤欄到詳細視圖的底部,並在工具欄tabbar之間的詳細信息視圖中加載標籤。

這裏是問題,我添加另一個視圖之間加載標籤,如果是的話,我怎麼得到它調整大小和尊重工具欄和標籤欄高度。

清除?

希望有人能指出我正確的方向。例子會很棒,網絡上的每個例子似乎都是開箱即用的世界風格。

回答

2

是的,答案真的很簡單。 UITabBarControllers像SplitViewControllers是蘋果公司所希望的唯一的根視圖控制器,因此你不能在另一個視圖中嵌套TabBarController,但是你可以在視圖中嵌套一個UITabBar。

我將Tabbar添加到底部的詳細信息視圖,頂部的導航欄以及它們之間的佔位符視圖。所有在Interface Builder!中,您都希望使用佔位符視圖上的autosize切換所有內容。

接下來,實現UITabBarDelegate。爲此,您需要:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 
從,你可以用item.tag如果你給其中每個項目在Interface Builder一個獨特的標籤會讓你知道用戶點擊該選項卡

。我設置定義的值礦:

#define VIEW_TAB_A 0 
#define VIEW_TAB_B 1 
#define VIEW_TAB_C 2 

然後,那麼你將要...好最好的,我只是讓你看到

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 
    [self switchToView:item]; 
} 

- (void) switchToView : (UITabBarItem*) item { 

    if(currentViewController != nil) { 
     [currentViewController viewWillDisappear:NO]; 
     [currentViewController.view removeFromSuperview];    
    } 

    switch(item.tag) { 
     case VIEW_TAB_A: 
      currentViewController = self.viewA; 
      break; 
     case SCAN_VIEW_TAB_B: 
      currentViewController = self.viewB; 
      break; 
     case PROMOTIONS_VIEW_TAB_C: 
      currentViewController = self.viewC; 
      break; 
    } 

    UIView *aView = currentViewController.view; 

    aView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
    aView.frame = placeholderView.frame; 

    [currentViewController viewWillAppear:NO]; 

    [self.view insertSubview:aView aboveSubview:placeholderView]; 
    if(currentViewController != nil) { 
     [currentViewController viewDidDisappear:NO]; 
    } 
    [currentViewController viewDidAppear:NO]; 
} 

記住的Alloc的意見(viewA,viewB,viewC)第一在你viewDidLoad和顯然釋放dealloc。還要注意autoresizingMask!

希望這可以幫助別人。

相關問題