Отключить автоматическое всплывающее окно в корневой viewcontroller, когда вкладка дважды нажата - PullRequest
0 голосов
/ 20 декабря 2018

В настоящее время я использовал контроллер представления, чтобы выдвинуть другой контроллер представления, но я не позволяю пользователю вернуться к предыдущему контроллеру представления.Я уже скрываю кнопку возврата на панель, но в swift 4 пользователь может автоматически подключиться к rootviewcontroller на панели навигации автоматически, когда панель вкладок дважды нажимает.Любое предложение на swift 4.2 для решения этой проблемы?

Ответы [ 4 ]

0 голосов
/ 21 декабря 2018

По сути, нижеприведенная функция хорошо справляется со своей задачей, только одна вещь, которую нужно выполнить, чтобы вызвать ее при запуске, - установить делегат = себя в tabbarcontroller.

extension TabBarController: UITabBarControllerDelegate {
      func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
      return viewController != tabBarController.selectedViewController
}}

Credit@ Азат

0 голосов
/ 20 декабря 2018

Вы можете использовать setViewControllers([newViewController], animated: true) вместо push, чтобы в стеке не было контроллера представления, к которому можно вернуться.

0 голосов
/ 20 декабря 2018

Вы можете создать подкласс UITabBarController, сделать контроллер панели вкладок своим собственным делегатом и реализовать следующую функцию делегата:

class TabBarController: UITabBarController, UITabBarControllerDelegate {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        delegate = self
    }

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        delegate = self
    }

    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        return viewController != selectedViewController
    }

}

Таким образом, пользователь может выбирать только те элементы панели вкладок, которые еще не выбраны.

0 голосов
/ 20 декабря 2018

Вы можете отключить двойное касание с этим расширением.

   extension TabBarController: UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {

    return viewController != tabBarController.selectedViewController
}}
...