PresentModalViewController没有显示TabBar

时间:2013-02-19 07:35:44

标签: objective-c uitabbarcontroller uitabbar presentmodalviewcontroller

我正试图从一个xib转到另一个xib,我正在使用TabBar。 当我使用PresentModalViewController从xib移动到xib时,我丢失了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 个答案:

答案 0 :(得分:2)

上面的代码崩溃是因为您试图在initWithNibName:bundle:方法中传递视图控制器而不是NSString对象。

这样做的方法取决于你真正想做的事情。你想在带有或没有tabBar?的modalViewController中呈现xib,或者只是以模态方式呈现视图控制器吗?。

<强>更新

很好,你必须首先创建与每个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];

我认为这段代码应该有效。所以,试一试,告诉我们是否出了问题。

答案 1 :(得分:1)

使用UITabBarController,无需手动呈现viewControllers或调用代码来切换视图。这是为您处理的。

您需要做的就是设置UITabBarController的viewControllers属性。像这样:

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