我试图提供一个 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在模拟器上工作
有什么想法吗?
答案 0 :(得分:0)
尝试将 UIImagePickerController 的对象声明为 Instance 级别参数,而不是在函数内。
答案 1 :(得分:0)
在测试了一系列不同的方法但没有成功之后,我已经改变了功能签名并且......它有效!
似乎init
前缀混淆了Swift。
我在论坛和官方文档中寻找一些相关主题,但我没有得到任何东西。
也许是个错误?