【发布时间】:2017-01-20 04:29:14
【问题描述】:
我的应用是作为根视图控制器样式应用的单视图 NavigationController。在其中,我有一些使用 3D Touch 的不同快捷方式。我将它们全部设置在 Info.plist 中(我之前使用 Tab Bar 应用程序完成了此操作,并且效果很好),但每次按下快捷方式操作时它都会崩溃。这是我在 Obj-C 中 AppDelegate 中使用的代码。
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
UINavigationController *nav = (UINavigationController *) self.theMainView.view;
NSLog(@"%@", shortcutItem.type);
if ([shortcutItem.type isEqualToString:@"com.316apps.Fritch.inviteFriends"]) {
ImagePicker *vimeo= [[ImagePicker alloc] init];
[nav pushViewController:vimeo animated:YES];
}
if ([shortcutItem.type isEqualToString:@"com.316apps.Fritch.viewAlerts"]) {
NewsViewController *dvController8 = [[NewsViewController alloc] initWithNibName:@"NewsViewController" bundle:[NSBundle mainBundle]];
[nav pushViewController:dvController8 animated:YES];
}
if ([shortcutItem.type isEqualToString:@"com.316apps.Fritch.viewDirectory"]) {
DirectoryViewController *dvController8 = [[DirectoryViewController alloc] init];
[nav pushViewController:dvController8 animated:YES];
}
}
崩溃日志:
com.316apps.Fritch.viewDirectory
2017-01-19 22:44:23.305906 Fritch[3956:925348] -[UILayoutContainerView pushViewController:animated:]: unrecognized selector sent to instance 0x101837530
2017-01-19 22:44:23.306768 Fritch[3956:925348] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILayoutContainerView pushViewController:animated:]: unrecognized selector sent to instance
【问题讨论】:
-
请添加崩溃日志。
-
你100%确定
ImagePicker是一个viewController吗?与其他命名相比,它表明这是一个视图。你所有的其他控制器都有这个方案:someViewController而不仅仅是some。如果我们遵守您的约定,那么它应该是ImagePickerViewController。因此,我为什么要问,这是一个错误吗? -
@Brandon 它是一个视图控制器。我正在更新这个应用程序,它曾经是一个标签栏控制器。虽然它是一个标签栏控制器,但我能够获取当前标签,将其初始化为根视图控制器,然后将我需要的任何视图推送到它上面。这些快捷方式在这方面工作得很好,我只需要弄清楚如何让它在 UINavigationController 作为根而不是选项卡上正常工作。
-
@nynohu 我添加了崩溃日志
标签: ios objective-c uinavigationcontroller 3dtouch