我正试图从一个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获得黑屏。
由于这一切都失败了,我想这不是正确的方法。 那么,做到这一点的正确方法是什么?
答案 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]];