interactivePopGestureRecognizer вызывает UINavigationItem элемента UITableViewController для исчезновения - PullRequest
0 голосов
/ 07 сентября 2018

В 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 () он предотвращает возникновение проблемы, но также предотвращает смахивание, и я хотел бы сохранить эту функциональность по умолчанию.

...