1

我有一个实现远程通知的应用程序。我的愿望是根据以下三个条件之一更改初始视图控制器:用户自己启动应用程序(无通知);或者,用户收到可疑活动警报;或者,用户收到犯罪警报。我已经在 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(这个视图是地图视图的模型视图),或者我正在尝试加载活动视图,或者再次,我没有获得导航控件。

我是否需要专门对导航控件进行编程,或者我在尝试加载视图时遗漏了什么?

我在其他帖子中看到了对动态更改初始视图的引用。但我没有看到任何表明添加控件需要特定编程的东西。非常感谢您提供的任何帮助!

苏珊

4

2 回答 2

2

你看过帖子吗,使用 Storyboards 以编程方式设置初始视图控制器

该帖子的答案可能会解决您的问题,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    UIViewController *viewController = // determine the initial view controller here and instantiate it with [storyboard instantiateViewControllerWithIdentifier:<storyboard id>];

   self.window.rootViewController = viewController;
   [self.window makeKeyAndVisible];

   return YES;
}

您也可以下载此示例,并根据您的要求实施它。

于 2013-04-03T05:14:40.567 回答
0

只需更改关键窗口的rootViewController,示例代码放在这里,希望对您有所帮助:

UIStoryboard *storyboard = self.window.rootViewController.storyboard;
    UIViewController *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"rootNavigationController"];
    self.window.rootViewController = rootViewController;
于 2013-10-01T15:24:26.660 回答