2014-03-07 113 views
0

我有選項卡式應用程序,3個選項卡僅包含不同數據的相同屏幕。iOS,iPad-具有相同主控和詳細視圖控制器的多個分割視圖控制器

爲了實現這些屏幕的功能,我使用了分割視圖控制器。 我需要做的是創建3個選項卡,全部使用此分割視圖控制器(具有相同的主視圖控制器和詳細視圖控制器),而無需在故事板中重複三次主視圖控制器和詳細視圖控制器。

我試着創建三個拆分視圖控制器,並將它們全部鏈接到一個主視圖控制器和一個詳細視圖控制器,但這並不起作用。這些控制器中只有一個實際使用它們。其他只是顯示黑屏。

有關如何完成此任務的任何提示?

回答

1

我想我得到了它使用以下工作:

在故事板,拆分視圖控制器的故事板ID是「splitVc」:

Storyboard Layout

然後,我用下面的代碼在我AppDelegate

- (BOOL)application:(UIApplication *)application 
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 
    UISplitViewController *splitVc1 = [self.window.rootViewController.storyboard 
     instantiateViewControllerWithIdentifier:@"splitVc"]; 

    UISplitViewController *splitVc2 = [self.window.rootViewController.storyboard 
     instantiateViewControllerWithIdentifier:@"splitVc"]; 

    UISplitViewController *splitVc3 = [self.window.rootViewController.storyboard 
     instantiateViewControllerWithIdentifier:@"splitVc"]; 

    UITabBarController *tabBarVc = (UITabBarController *)self.window.rootViewController; 

    tabBarVc.viewControllers  = @[splitVc1, splitVc2, splitVc3]; 
    return YES; 
} 

這給了我什麼似乎是個單獨的實例210,每個分配給UITabBarController中的3個選項卡中的一個,這是我的UIWindow的根視圖控制器。

這就是你想要的嗎?

+0

當你這樣做時,你沒有在控制檯中得到警告/錯誤?根據Apple的說法,我並沒有真正使用Storyboard,但使用UISplitViewController時它必須是rootViewController,「分割視圖控制器必須始終是您創建的任何界面的根。換句話說,您必須始終安裝視圖aUISplitViewController對象作爲應用程序窗口的根視圖,然後,您的分割視圖界面的窗格可能包含導航控制器,選項卡欄控制器或實現您的界面所需的任何其他類型的視圖控制器。 –

+0

此配置可能無法通過HIG,但在Xcode中沒有編譯器/控制檯警告。我不保證蘋果會贊同這一點! ;-) – mbm29414

+0

它正是我想要的,但現在我又有了一個有趣的問題。 「tabBarController.selectedIndex」的值與所選標籤不一致。這意味着例如我選擇第一個選項卡和selectedIndex = 1。然後我選擇另一個標籤並重新選擇第一個標籤。選定的索引現在是3.任何想法如何解決它? – Kladimir

相關問題