首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确地将导航控制器设置为uitab栏的根

正确地将导航控制器设置为uitab栏的根
EN

Stack Overflow用户
提问于 2015-03-22 12:31:16
回答 1查看 47关注 0票数 0

我有点困惑,无法使事情顺利进行。

这是我在应用程序中的代码。

代码语言:javascript
复制
 // If the device is an iPad, we make it taller.
    _tabBarController = [[AKTabBarController alloc] initWithTabBarHeight:(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 70 : 50];

 NSString * storyboardName = @"Main_iPhone";
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
    CurrentViewController * tab1VC = [storyboard instantiateViewControllerWithIdentifier:@"Tab1"];

    // dummy controllers
    CurrentViewController * tab2VC = [storyboard instantiateViewControllerWithIdentifier:@"Tab1"];
    CurrentViewController * tab3VC = [storyboard instantiateViewControllerWithIdentifier:@"Tab1"];
    CurrentViewController * tab4VC = [storyboard instantiateViewControllerWithIdentifier:@"Tab1"];


    [_tabBarController setViewControllers:[NSMutableArray arrayWithObjects:
                                           tab1VC,
                                           tab2VC,
                                           tab3VC,
                                           tab4VC,
                                           nil]];

    [_window setRootViewController:_tabBarController];
    [_window makeKeyAndVisible];

然后,在我的故事板上,我看到了下面的图片:

因此,我有我的ViewController,我点击了嵌入>导航控制器

我希望每个选项卡都有一个不同的导航控制器。

在我的CurrentViewController中,当单击按钮时,我有以下内容:

代码语言:javascript
复制
- (IBAction)dummyButton:(id)sender {
    NSString * storyboardName = @"Main_iPhone";
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
    UserSettingsSetupViewController *userSettingsSetupController = [storyboard instantiateViewControllerWithIdentifier:@"UserSettingsSetup"];
    [[self navigationController] pushViewController:userSettingsSetupController animated:YES];
}

显然,没有任何东西被推到导航控制器中,因为什么都没有打开。

通过一些研究,我发现这是因为self navigationControllerself.navigationController返回的是0.

但这是为什么?我要加代码吗?我以为从故事板上说出来,就不应该是零?我说错了吗?

EN

Stack Overflow用户

回答已采纳

发布于 2015-03-22 15:41:27

几句评论。首先,如果使用情节提要,不要在应用程序委托中创建视图控制器;将所需的所有控制器拖到情节提要中。根本不需要在应用程序委托中添加任何代码。

您的问题是由于试图将故事板控制器和应用程序委托中的代码混合。您正在实例化tab1VC,并使第一个选项卡中的控制器“不知道”您在故事板中添加的导航控制器的任何内容。如果您想用代码(我不推荐)来执行它,则需要实例化导航控制器(它将负责实例化其根视图控制器),并将其添加为viewControllers数组中的第一项。

我的建议是在故事板上做所有的事情。将选项卡条控制器的类更改为AKTabBarController,并在init方法或viewDidLoad中设置其选项卡条高度。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29194374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档