【发布时间】:2013-04-03 00:59:02
【问题描述】:
我有一个实现远程通知的应用程序。我的愿望是根据以下三个条件之一更改初始视图控制器:用户自己启动应用程序(无通知);或者,用户收到可疑活动警报;或者,用户收到犯罪警报。我已经在 appDelegate 中实现了应用程序 didReceiveRemoteNotification: 方法。根据通知和用户对通知的响应,我实现了以下代码:
UITabBarController *tbContr = (UITabBarController*) self.window.rootViewController;
UINavigationController *navContr = [tbContr.viewControllers][2];
ViewCrimesController *viewCrimes = [navContr.storyboard instantiateViewControllerWithIdentifier:@"ViewCrimes"];
[navContr presentViewController:viewCrimes animated:YES completion:nil];
[self.window.makeKeyAndVisible];
我遇到的问题是导航控件——即后退按钮和导航栏标题;出现时不在 ViewCrimesController 上。我尝试以多种不同的方式加载 ViewCrimesController。每种方式我都得到错误,说没有 segue(这个视图是映射视图的模型视图),或者我正在尝试加载活动视图,或者再次,我没有获得导航控件。
我是否需要专门对导航控件进行编程,还是在尝试加载视图时遗漏了什么?
我在其他帖子中看到了对动态更改初始视图的引用。但我没有看到任何表明添加控件需要特定编程的东西。非常感谢您提供的任何帮助!
苏珊
【问题讨论】:
-
您可能会在此代码上看到警告,您可以在没有强制转换的情况下访问 viewControllers。另外,你能更好地描述你想要发生的事情吗?例如形式:'我有 N 个选项卡,每个选项卡都是一个导航控制器。当某些通知条件发生时,我希望 X 成为可见的第一件事。
-
你能详细说明这个“我遇到的问题是导航控件——即后退按钮和导航栏标题;当它出现时不在 ViewCrimesController 上”
-
您要求
ViewCrimes控制器 - 大概在您的记分牌中,它嵌入在导航控制器中。当您直接实例化ViewCrimes控制器时,您没有得到包装UINavigationController -
@Paul.s,谢谢。你的评论让我走上了正轨。最终我所做的是删除 ViewCrimes 控制器的实例化,而是使用嵌入式 ViewCrimes 控制器从情节提要中实例化第二个导航控制器。因此,我删除了 'ViewCrimesController *viewCrimes'... 并将其替换为 'UINavigationController *nv = [navContr.storyboard instantiateViewControllerWithIdentifier:@"navcrimes";'
标签: iphone cocoa-touch uinavigationcontroller apple-push-notifications