关闭imagePickerController之后,如何返回当前选项卡而不是默认选项卡

时间:2019-02-13 04:32:04

标签: uitabbarcontroller swift4

我在标签栏中有4个标签。目前,我正在第4个标签中工作,并具有imagePickerController。关闭imagePickerController后,它会转到默认选项卡(第一个选项卡)。如何使其转到当前(第4个)标签?

class EditMyPostViewController: UIViewController {

    @IBOutlet weak var postImageView: UIImageView!


    let imagePicker = UIImagePickerController()

    override func viewDidLoad() {
        super.viewDidLoad()

        imagePicker.delegate = self
    }

    @IBAction func updatePhotoTapped(_ sender: Any) {
        let alert = UIAlertController(title: "Add a picture", message: "How do you want to upload the picture?", preferredStyle: .alert)

        alert.addAction(UIAlertAction(title: "Take Photo", style: .default, handler: { action in
            self.takePhotoWithCamera()
        }))

        alert.addAction(UIAlertAction(title: "Use Existing Photo", style: .default, handler: { action in
            self.getPhotoFromLibrary()
        }))
        self.present(alert, animated: true)
    }
}

extension EditMyPostViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    func takePhotoWithCamera() {
        if (!UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera)) {
            let alertController = UIAlertController(title: "No Camera", message: "The device has no camera.", preferredStyle: .alert)
            let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
            alertController.addAction(okAction)
            present(alertController, animated: true, completion: nil)
        } else {
            imagePicker.allowsEditing = false
            imagePicker.sourceType = .camera
            present(imagePicker, animated: true, completion: nil)
        }
    }

    func getPhotoFromLibrary() {
        imagePicker.allowsEditing = false
        imagePicker.sourceType = .photoLibrary
        present(imagePicker, animated: true, completion: nil)
    }

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

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage
        {
            postImageView.image = image
        }

        dismiss(animated: true, completion: nil)
    }
}

imagePicker存在于两个功能takePhotoWithCamera()getPhotoFromLibrary()中。 在上一个函数中,我尝试dismiss(animated: true, completion: nil),但是它转到默认选项卡而不是当前选项卡。如何显示当前的ViewController?

我尝试过

present(self, animated: true, completion: nil)

但这会导致异常:应用程序试图以模态形式显示活动控制器

0 个答案:

没有答案