UIImagePickerController отклонить не правильно - PullRequest
0 голосов
/ 21 мая 2019

В UITabbarController есть 5 элементов: VC0, VC1, VC3 (выбрано по умолчанию), VC4, VC5.

UITabbarController> NavigationController> VC1> VC1-A

UIImagePickerController представлен в VC4-A:

let imagePickerController = UIImagePickerController()
imagePickerController.sourceType = .photoLibrary
imagePickerController.delegate = self
imagePickerController.allowsEditing = false
self.present(imagePickerController, animated: false)

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    let info = convertFromUIImagePickerControllerInfoKeyDictionary(info)

    if let image = info[convertFromUIImagePickerControllerInfoKey(UIImagePickerController.InfoKey.originalImage)] as? UIImage{
       topImage.image = image
    }

    picker.dismiss(animated: true, completion: nil)

}

Когда изображение выбрано и сборщик закрыт, представление перейдет к выбранному по умолчанию элементу VC3, но не к VC1-A.

Я нашел это внедавно тест на приложение, но я помню, что раньше он работал правильно.Теперь я не могу вспомнить, что я сделал, что может сделать это неправильно, обновление XCode, обновление версии Swift?Я знаю, что я не делаю изменений в этой части.

Следующие попытки также не работают:

self.navigationController?.present(imagePickerController, animated: false)
self.navigationController?.dismiss(animated: true, completion: nil)
self.navigationController?.popViewController(animated: true)
picker.popViewController(animated: true)

К настоящему времени я делаю это работает так:

picker.dismiss(animated: true, completion: {
        self.tabBarController?.selectedIndex = 1
    })

Но это не очень хорошая идея, чтобы решить проблему, надеюсь, кто-то может дать правильное решение.Благодаря.

1 Ответ

0 голосов
/ 21 мая 2019

Вы должны получить tabBarController контроллера навигации VC1-A и изменить выбранный индекс

picker.dismiss(animated: true) {//dismiss image picker
    if let navigationController = self.navigationController {
        navigationController.popToRootViewController(animated: true)//go to VC1
        navigationController.tabBarController?.selectedIndex = 2//go to VC3
    }
}
...