1

我有一个 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'的导航控制器。只有当源控制器由 UINavigationController 的实例管理时,才能使用推送 segue。

我的印象是 UIImagePickerController 是一个导航控制器,但我显然错了。我是否必须在我的 Storyboard 中明确包含导航控制器并将根视图控制器连接到我的 UIImagePickerController?我试过了,不幸的是没有运气。

任何人都知道发生了什么以及我如何解决这个问题?我很乐意使用[self pushViewController:vc animated:YES];,我只是想了解为什么另一种方式不能按我期望的方式工作。

谢谢!

编辑1:在故事板中我去了

编辑器 > 嵌入 > 导航控制器

这很好地连接了所有东西,但是当我尝试导航到根视图控制器时,XCode 调试面板旋转了一下,然后因访问错误而崩溃。

4

0 回答 0