Xcode 6 - 添加了导航控制器到故事板,但没有出现在应用程序中

时间:2015-09-02 18:30:48

标签: ios objective-c xcode

我在我的故事板中添加了一个导航控制器,它看起来像是这样:

enter image description here

现在在表视图控制器中,我向TableViewController提供了一个故事板id和类到TableViewController控制器

当我运行我的应用程序时,我看不到顶部的导航栏。这非常令人沮丧,无法在任何地方找到解决方案。请帮助

要进入现场,有人点击一个按钮,这段代码就会运行,然后进入我的表视图控制器:

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];

                LHFileBrowser *LHFileBrowser = [storyBoard instantiateViewControllerWithIdentifier:@"FileBrowser"];
                [self.navigationController pushViewController:LHFileBrowser animated:YES];
                [self presentViewController:LHFileBrowser animated:YES completion:nil];

1 个答案:

答案 0 :(得分:2)

错误在您的代码中。

如果您希望(模态地)在用户按下按钮时显示视图控制器,则需要显示导航控制器(将包含表视图控制器),而不是表视图控制器本身。

目前,您正在展示视图控制器,它不会显示它嵌入在导航控制器中。

此外,您通过尝试将视图控制器推送到导航控制器堆栈并同时呈现视图控制器来混合两种不同的方法。

代码示例:

这是你显然要做的事情:

UIStoryboard *storyboard = self.storyboard;
UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:@"MyNavigationControllerID"];
LHFileBrowser *rootViewController = [navigationController topViewController];

// Configure your LHFileBrowser view controller here.
rootViewController.someProperty = ...;

// Modally present the embedded view controller
[self presentViewController:navigationController animated:YES completion:nil];

如果要更改演示文稿或过渡样式,可以在故事板中设置这些详细信息。

您没有解释为什么必须以编程方式添加按钮,但Storyboard segues将实例化并为您呈现嵌入式视图控制器,而无需您在代码中完成它。

您在Storyboard中可以做的越多,维护,支持和更新所需的代码就越少,并且在发布新SDK时您的应用程序仍然可以正常运行。

<强>更新

更好的方法是让Storyboard为您完成,方法是将按钮中的segue添加到您想要呈现的导航控制器中。