我正在开发iOS应用并使用故事板。在我的故事板中,我设置了一个SWRevealView控制器,它工作正常。
现在我有一个新的要求,我需要在收到推送通知后提供一个viewcontroller,这是来自appdelegate的揭示中的rear_vc的一个选项。
在appdelegate中我使用下一个方法来实例化并显示视图控制器
- (void)showViewController {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
TheViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"vc"];
[self.window makeKeyAndVisible];
[self.window.rootViewController presentViewController:vc animated:YES completion:NULL];
}
因此,由于viewcontroller是后视图控制器的一个选项,我需要添加手势识别器来显示菜单
[self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer];
[self.view addGestureRecognizer:self.revealViewController.tapGestureRecognizer];
这就是我遇到问题的地方,因为self.revealViewController是nil,应用程序崩溃了,因为segue不是直接来自后视图控制器。
在后视控制器准备segue方法时,我们需要添加这行
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ( [segue isKindOfClass: [SWRevealViewControllerSegue class]] ) {
SWRevealViewControllerSegue *swSegue = (SWRevealViewControllerSegue*) segue;
swSegue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {
UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController;
[navController setViewControllers: @[dvc] animated: NO ];
[self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
};
}
}
但是从appdelegate我不能这样做,怎么能实现呢?
由于