В XCode 9.4 с использованием Swift 4.1:
В моей основной раскадровке у меня есть UITableViewController, который запускается с помощью сеанса раскадровки "Show" из UIButton, помещенного в UIViewController, встроенный в UINavigationController, который установлен в качестве начального контроллера представления. (У UIViewController есть navigationController?.isNavigationBarHidden = true
, потому что я не хочу отображать UINavigationTitle.)
Все работает как положено. Нажатие на UIButton запускает UITableViewController, который имеет UINavigationItem (с кнопкой «Назад» по умолчанию слева). Правильный щелчок по любой из ячеек в таблице приводит к переходу на вспомогательный UIViewController, который также имеет UINavigationItem, кнопку «Назад» и т. Д.
К сожалению, если пользователь начинает - но не завершает - жест смахивания на UITableViewController, это приводит к исчезновению UINavigationItem UITableViewController (и, фактически, всей области UINavigation вверху представления), который эффективно «заманивает» пользователя в ловушку на этом экране, не возвращаясь к первоначальному UIViewController.
Вот viewDidLoad () UITableViewController:
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 11.0, *) {
navigationController?.navigationBar.prefersLargeTitles = false
}
self.title = "Types of Bananas"
navigationController?.isNavigationBarHidden = false
navigationController?.navigationBar.barTintColor = UIColor.brown
navigationController?.navigationBar.tintColor = UIColor.white
}
Если я добавлю
navigationController?.interactivePopGestureRecognizer?.isEnabled = false
для viewDidLoad () он предотвращает возникновение проблемы, но также предотвращает смахивание, и я хотел бы сохранить эту функциональность по умолчанию.