呈现 UIImagePickerController 后应用程序崩溃
Posted
技术标签:
【中文标题】呈现 UIImagePickerController 后应用程序崩溃【英文标题】:app crashes after presenting an UIImagePickerController 【发布时间】:2014-08-29 08:30:31 【问题描述】:我正在尝试展示 UIImagePickerController 以从相册中获取图像,但我遇到了一种奇怪的行为。
如果我在 viewDidLoad 中启动图像选择器,它会起作用:
class CaptureImageViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad()
super.viewDidLoad()
initPicker()
func initPicker()
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
presentViewController(picker, animated: true, completion: nil)
func imagePickerController(picker: UIImagePickerController!, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]!)
dismissViewControllerAnimated(true, completion: nil)
imageView.image = info["UIImagePickerControllerOriginalImage"] as UIImage
func imagePickerControllerDidCancel(picker: UIImagePickerController!)
dismissViewControllerAnimated(true, completion: nil)
但是,如果我将 initPicker() 变成 @IBAction 并从按钮调用它,点击它后,图像选择器会出现,但应用程序突然崩溃出现此错误:
CaptureImageViewController respondsToSelector:]: message sent to deallocated instance 0x7960b1e0
我正在使用 XCode Beta 6 开发模拟器
有什么想法吗?
【问题讨论】:
您能发布带有 IBAction 的代码吗? @Akaino,代码完全相同,但 initPicker() 到 viewDidLoad() 消失了。此外,initPicker() 函数定义变为 @IBAction func initPicker()... 【参考方案1】:尝试将 UIImagePickerController 的对象声明为 Instance 级别的参数,而不是在函数中。
【讨论】:
【参考方案2】:在测试了一堆不同的方法都没有成功后,我更改了函数签名并且......它有效!
init
前缀似乎让 Swift 感到困惑。
我正在论坛和官方文档中寻找一些相关主题,但我没有得到任何东西。
可能是一个错误?
【讨论】:
以上是关于呈现 UIImagePickerController 后应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
如何从 webview 使用 UIImagePickerController
iPhone OS 3.0 中的 UIImagePickerController