首页 > 解决方案 > 双转换错误 tvOS

问题描述

我在 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)

标签: swifttvos

解决方案


您可以在按下按钮后禁用该按钮,以防止用户双击,并确保如果您需要担心状态返回到您的 ViewController,您可以在 viewWillAppear 上启用它。


推荐阅读