xcode - 如何使用 Storyboard 在 AppDelegate 中使用自定义 Navigationcontroller

标签 xcode uinavigationcontroller apple-push-notifications xcode-storyboard

我在 AppDelegate 中遇到了关于 Navigationcontroller 的问题。我正在使用一个 Storyboard,它看起来像这样:

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 时就足够了。

谢谢你的帮助!

最佳答案

UINavigationControllerUIViewController子类,也可以在 Storyboard中分配一个标识符。

使用 -instantiateViewControllerWithIdentifier:创建 UINavigationController它是根 View Controller 。您可能需要在代码中实例化所有中间 Controller 并修改导航 Controller 的 viewControllers属性来设置适当的导航堆栈。通过这种方式,当应用程序启动到详细信息 View 时,他们可以找到返回的路,就好像他们已经通过界面手动一直推过去一样。

关于xcode - 如何使用 Storyboard 在 AppDelegate 中使用自定义 Navigationcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779808/

相关文章:

充电时的IOS通知

iphone - 我无法启用我的推送通知参数

swift - 重置 AVAudioEngine

iphone - 在 iPhone 导航栏上绘制自定义后退按钮

ios - 导航栏上的自定义 UIBarButtonItem 图像偏移

ios - 记录中特定字段的 cloudkit 通知

ios - 我的应用程序在设备上崩溃 XCode,在模拟器上没有崩溃

iphone - Xcode 和 Git 源代码管理 : “The working copy XXXXX failed to commit files”

iphone - 在xcode中访问数据库文件

iphone - TabBarItem 上的 NavigationController