我在xcode8上使用swift3制作iOS应用。
我的故事板就是这个(storyboard)。
如果我从左侧单击第三个TableViewController上的按钮,将出现第四个。第四个是ViewController,用于选择库或相机将照片放到第三个TableViewController上的imageView上。
我在第四个ViewController文件中编写了下面的函数。该功能是在拍摄或选择照片时调用的方法。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
if info[UIImagePickerControllerOriginalImage] != nil {
DispatchQueue.main.async {
let navigationController = self.presentingViewController as! UINavigationController
let originVc = navigationController.topViewController as! SettingTableViewController
originVc.image = image
self.dismiss(animated: true, completion: nil)
}
}
picker.dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
运行此操作后,let navigationController = self.presentingViewController as! UINavigationController
部分会突出显示,并显示Thread 1: signal SIGABRT
。并且还显示错误Could not cast value of type '[APPNAME].ViewController' to 'UINavigationController' (0x10f85c4a8).
(* [APPNAME]是我的应用名称)。
你对此有所了解吗?
提前谢谢!
答案 0 :(得分:0)
此次崩溃告诉您presentingViewController
不是 UINavigationController
,实际上是UIViewController
,因此您需要使用{{1} }}属性并使用.navigationController
或if let
来避免任何问题
guard