【问题标题】:viewDidLoad() is called every time after dismiss() of UIImagePickerController()每次 UIImagePickerController() 的 dismiss() 后都会调用 viewDidLoad()
【发布时间】:2018-08-05 20:54:28
【问题描述】:

我从ViewControllerA 提交了UIImagePickerController(),当我选择一个图像时,它的委托被调用,在那个委托中我写了

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

        dismiss(animated: true, completion: nil)
}

viewDidLoad()ViewControllerA 也叫

【问题讨论】:

  • viewDidLoad 在进入 ViewController 时只调用一次。
  • @ivarun: 不,一旦我选择图像,它就会再次调用
  • 你是怎么知道 viewDidLoad 被调用的?通过断点或记录或打印消息?
  • @hardikparmar:是的,通过断点
  • 可以分享代码吗?

标签: ios iphone swift uiimagepickercontroller


【解决方案1】:

请看下面的代码,不是每次都调用viewDidLoad。

override func viewDidLoad() {
    super.viewDidLoad()
    print("View Did Load")
}

private func imagePickerController(_ picker: UIImagePickerController,
                           didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    picker.dismiss(animated: true, completion: nil);

    _ = info[UIImagePickerControllerOriginalImage] as! UIImage
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    picker.dismiss(animated: true, completion: nil)
}

使用此代码打开照片库,

@IBAction func btnclicked(_ sender: Any) {
    let picker = UIImagePickerController()
    picker.sourceType = .photoLibrary
    picker.delegate = self
    self.present(picker, animated: true, completion: nil)
}

同时发布您的一些代码,以便我查看。

如有任何疑问,请告诉我。

【讨论】:

    【解决方案2】:

    在使用 UIImagePickerViewController 时,相机经常会导致内存警告,并且会调用视图控制器的 viewDidUnload 方法。下次显示视图时(当 UIImagePickerViewController 关闭时),将调用 viewDidLoad 方法,因为它之前已被卸载。

    【讨论】:

    • 您可以重新创建在 viewDidUnload 中删除的任何内容,或者您​​可以检查它是否已经在 viewDidLoad 中创建,然后不再重复。
    • 我有一个 tableView 填充在 viewDidLoad() 上,所以由于这个 api 被调用了两次,并且在另一个用 Objective-C 编写的项目中没有发生同样的事情
    • 如果我只使用 PhotoLibrary 作为 ImagePicker 的来源,那么它应该不会导致内存问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多