Контроллер навигации дочернего контроллера конфликтует в пользовательском интерфейсе с родительским контроллером навигации - PullRequest
0 голосов
/ 28 мая 2020

Шаги:

  1. Встроить контроллер навигации в контроллер точки входа (ViewController.swift) основного приложения.
  2. Установить точку входа в контроллер навигации.
  3. Добавьте дополнительный контроллер представления в раскадровку и свяжите его с файлом ViewController1.swift.
  4. Вызовите эту функцию из действия IB файла ViewController.
func addChildController(childController : UIViewController) {

    let navigation = UINavigationController.init(rootViewController: childController)
    navigation.view.frame = self.view.frame
    navigation.willMove(toParent: self)
    self.addChild(navigation)
    navigation.beginAppearanceTransition(true, animated: true)
    self.view.addSubview(navigation.view)
    navigation.endAppearanceTransition()
    navigation.didMove(toParent: self)
}

Результат: - дополнительное пространство между панелью навигации и нижним пользовательским интерфейсом, которое связано с безопасной областью контроллера просмотра.

enter image description here

1 Ответ

1 голос
/ 28 мая 2020

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

В вашем случае вы добавили контроллер навигации через раскадровку, а затем в func addChildController(childController : UIViewController) { вы снова добавляете новый контроллер навигации.

Я думаю, вместо того, чтобы использовать этот addChildController(), вы должны использовать это для нажатия следующего контроллера представления:

extension UIViewController {
    func pushVC(vcName : String) {
        let vc = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: vcName)
        self.navigationController?.pushViewController(vc, animated: true)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...