Ошибка двойного перехода - PullRequest
0 голосов
/ 08 мая 2018

У меня ошибка перехода на платформе tvOS: когда я дважды нажимаю кнопку «ввод» на пульте дистанционного управления, у меня двойной переход к следующему контроллеру просмотра. Я исправил эту проблему на IOS следующим образом:

class ViewController: UIViewController, UINavigationControllerDelegate {
    var segueInProgress: Bool?

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationController?.delegate = self
    }

    override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
        return segueInProgress == false
    }

    func navigateShow(to viewController: UIViewController, sender: Any? = self) {
        if self.segueInProgress == true { return }

        if let navigationController = self.navigationController {
            navigationController.show(viewController, sender: sender)
        } else {
            self.show(viewController, sender: sender)
        }
    }

    func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
        // Or like this: self.view.isUserInteractionEnabled = false
        self.segueInProgress = true
    }

    func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) {
        self.segueInProgress = false
        // Or like this: self.view.isUserInteractionEnabled = true
    }
}

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

let detailVC: DetailViewController = DetailViewController.instantiateViewController()
navigateShow(to: detailVC)

1 Ответ

0 голосов
/ 16 июня 2018

Вы можете отключить кнопку после нажатия, что предотвратит двойное нажатие пользователем, и просто убедитесь, что если вам нужно беспокоиться о том, что состояние возвращается к вашему ViewController, вы включите его снова в viewWillAppear.

...