Программно загрузить навигационный контроллер по нажатию на вкладку - PullRequest
0 голосов
/ 15 октября 2018

Я создал UITabBarController, в котором при выборе одного из элементов я загружаю средство выбора изображений. Теперь, когда пользователь выбирает изображение из средства выбора, я хочу загрузить контроллер навигации, чего я не могу.Мой код

extension BaseTabBarController : UITabBarControllerDelegate {

func  tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
    if self.viewControllers?.index(of:viewController) == 2 {
        // Presenting image picker here
        present(self.imagePicker, animated: true, completion: nil)
        return false
    } else {
        return true
    }
}

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {

 }

}

вот код после того, как пользователь выбрал изображение

extension BaseTabBarController : ImagePickerDelegate {

func doneButtonDidPress(_ imagePicker: ImagePickerController, images: [UIImage])  {

    //This is the StoryboardID of Navigationcontroller i want to goto
    let detailVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "UploadNavigationController")
    //This is not working
    present(detailVC, animated: true,completion: nil)
 }
}

Здесь контроллер не отображается, и я получаю это предупреждение

Warning: Attempt to present <UINavigationController: 0x7fb4969c4800> on <BaseTabBarController: 0x7fb49780ea00> whose view is not in the window hierarchy!

Я хочучтобы показать навигационный контроллер с панелью вкладок , все еще видимой внизу

1 Ответ

0 голосов
/ 15 октября 2018

Полагаю, что если вы хотите показать контроллер навигации с видимой внизу панелью вкладок, то сначала нужно отключить средство выбора изображений, а затем нажать новый контроллер, которого нет.

Потому что, если вы представляете какой-либо контроллербудет охватывать весь экран, как он представлен от корневого контроллераЕсли вы нажмете, то он вытолкнет из текущего контроллера, и табор останется прежним.

extension BaseTabBarController : ImagePickerDelegate {

    func doneButtonDidPress(_ imagePicker: ImagePickerController, images: [UIImage]) {
        self.imagePicker.dismiss(animated: true) {
        //This is the StoryboardID of Navigationcontroller i want to goto
        let detailVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "UploadNavigationController")
        //This is not working
        let nav = UINavigationController(rootViewController: detailVC)
        navigationController?.pushViewController(nav, animated: true)
        //present(detailVC, animated: true,completion: nil)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...