我在 AppDelegate 中遇到了关于 Navigationcontroller 的问题。我正在使用一个 Storyboard,它看起来像这样:
由于使用推送通知,我的 AppDelegate 文件中有以下功能:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
//...
}
当通知到达时,我想初始化需要一个 ID 作为参数的“详细 View ”- Controller 。此 ID 是我的有效负载的一部分,因此它存在于
didReceiveRemoteNotification
中.我想以下:
DetailView *detail = [storyboard instantiateViewControllerWithIdentifier:@"detail"];
detail.conversationID = theID;
[self.navigationController pushViewController:detail animated:YES];
我现在的问题是:我怎样才能获得导航 Controller ?我搜索了像“getNavigationControllerByIdentifier”之类的函数或类似的东西,但一无所获。我无法直接实例化 Detail View Controller,因为那里缺少导航栏。
我希望你明白我的意思——如果你认为我的方法完全错误,请纠正我;o)
还有一个小信息:细节 View Controller 中的后退按钮返回到表 View 对我来说并不重要 - 当它通过按钮“加载表 View ”链接到 Controller 时就足够了。
谢谢你的帮助!
最佳答案
UINavigationController
是 UIViewController
子类,也可以在 Storyboard中分配一个标识符。
使用 -instantiateViewControllerWithIdentifier:
创建 UINavigationController
它是根 View Controller 。您可能需要在代码中实例化所有中间 Controller 并修改导航 Controller 的 viewControllers
属性来设置适当的导航堆栈。通过这种方式,当应用程序启动到详细信息 View 时,他们可以找到返回的路,就好像他们已经通过界面手动一直推过去一样。
关于xcode - 如何使用 Storyboard 在 AppDelegate 中使用自定义 Navigationcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779808/