1

我想從一個xib到另一個,我使用TabBar。 當我從xib移動到xib與PresentModalViewController我失去了TabBar。PresentModalViewController不顯示TabBar

當我用這種方式,它失敗(如力接近的android):

FirstViewController *fvc = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil]; 
    [fvc setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
    fvc.userSelectedLatitude = saveLatitude; 
    fvc.userSelectedLongitude = saveLongtitude; 
    UITabBarController *tabControl = [[UITabBarController alloc] initWithNibName:fvc bundle:nil]; 
    [self presentModalViewController:tabControl animated:NO]; 

當我使用:

UITabBarController *tabControl = [[UITabBarController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 

我得到黑屏的TabBar。

因爲這一切都失敗我猜這不是正確的方法。 那麼,正確的做法是什麼?

回答

2

上述崩潰的代碼,因爲你試圖傳遞視圖控制器,而不是在initWithNibName:bundle:方法一個NSString對象。

做到這一點的方式取決於你真正想做什麼。你想在帶有或沒有tabBar?的modalViewController中展示xib,或者只是以模態方式呈現視圖控制器?

UPDATE:

精細,你必須先創建與每一個的TabBar按鈕(就像你一直在做,直至現在)你的視圖控制器,之後,這些視圖控制器添加到您的TabBar,然後呈現tabBarController模態。像這樣:

FirstViewController *fvc = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 
fvc.userSelectedLatitude = saveLatitude; 
fvc.userSelectedLongitude = saveLongtitude; 

UITabBarController *tabControl = [[UITabBarController alloc] init]; 
[tabControl setViewControllers:[NSArray arrayWithObjects:fvc, nil]]; 
[tabControl setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal]; 
[self presentModalViewController:tabControl animated:NO]; 

我認爲這段代碼應該可以工作。所以,試試看,並告訴我們是否出現問題。

+0

我想把它與標籤欄 – 2013-02-19 08:54:25

+0

看到答案更新 – thxou 2013-02-19 11:29:42

+0

它把我帶到正確的地方,但只顯示正確的形象與特定的標籤欄;沒有標題,也沒有其他按鈕。 編輯:好的,我加了控制器的其餘部分,現在好了,謝謝! – 2013-02-19 17:09:39

1

使用UITabBarController,不需要手動呈現viewControllers或調用代碼來切換視圖。這是爲你處理的。

您需要做的就是設置UITabBarController的viewControllers屬性。像這樣:

[tabBarController setViewControllers:[NSArray arrayWithObjects:view1, view2, nil]]; 
+0

我把它放在我的AppDelegate中: self.tabBarController = [[UITabBarController alloc] init]; self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1,viewController2,viewController3,viewController4,nil]; self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible]; 我不明白你,對不起。 – 2013-02-19 07:52:38

+0

我認爲你想從tab1中的viewController到tab2中的viewController。 – 2013-02-19 07:58:08

+0

我想從viewController3去viewController1。 – 2013-02-19 08:00:50