我有一个从主屏幕以模态方式呈现的UIImagePickerController。现在我的理解是UIImagePickerController是UINavigationController的子类,并充当根视图控制器。所以我可以很容易地做到这一点:
@interface SCTCameraViewController : UIImagePickerController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
@end
在viewDidLoad中:
[self setDelegate:self];
然后调用[self pushViewController:viewController animated:YES];
工作正常并转到指定的视图控制器就好了。有一个奇怪的事情发生在我在SCTViewController上的自定义UIButton附带我推动的下一个视图控制器。我可以轻松地调用[button removeFromSuperView];
没有问题,我真的好奇为什么那个按钮会粘在UIImagePickerController和我推到堆栈上的视图控制器的顶部。它必须是导航的奇怪和技术,但如果有人有任何想法,我很想知道答案。
所以我的主要问题。在我的故事板上,我有一个push segue连接我的UIImagePickerController和我想要推送到导航堆栈的视图控制器。但是当我调用[self performSegueWithIdentifier:@"viewControllerToPush" sender:self];
时,我的应用程序崩溃并抛出此错误:
由于未捕获的异常'NSGenericException'而终止应用程序,原因是:'无法找到segue'cutoutViewModal'的导航控制器。 Push segues只能在源控制器由UINavigationController实例管理时使用。
我的印象是UIImagePickerController是一个导航控制器,但我显然错了。我是否必须在我的Storyboard中明确地使用导航控制器并将根视图控制器连接到我的UIImagePickerController?我试过了,不幸的是没有任何运气。
任何人都知道发生了什么以及我如何解决这个问题?我很高兴只使用[self pushViewController:vc animated:YES];
,我只是理解为什么另一种方式不能按照我预期的方式工作。
谢谢!
编辑1:在故事板中我去了
编辑器&gt;嵌入&gt;导航控制器
这很好地解决了所有问题,但是当我尝试导航到根视图控制器时,XCode调试面板旋转了一段时间,然后因访问错误而崩溃。