tvOS中的单向搜索

时间:2016-10-17 14:17:24

标签: swift uiviewcontroller segue tvos

我有一个Swift3 tvOS应用程序,我使用performSegue(withIdentifier:...)从一个ViewController转换到另一个。在第二个ViewController中,我使用menu按钮进行UI交互,使用pressBegan和press.type == UIPressType.menu。

如果直接输入第二个ViewController(即默认的ViewController),这可以正常工作,但是通过转换,应用程序再次显示第一个ViewController,当按下菜单按钮时(菜单在tvOS中再加倍)。我的第二个ViewController也获取了密钥,但是UI结果从未显示,因为第二个ViewController消失了。我尝试过不同的segue类型,但无济于事。

问题:

1)有没有办法“消费”菜单键事件,所以它永远不会进入操作系统?

2)或者,我可以以某种方式做出“单向思考”吗?

3)备选方案2:我可以通过编程方式取消设置两个ViewControllers之间的关系吗?是什么使一个“父母”到另一个?我不使用导航控制器或任何东西,因此它必须是segue。

谢谢,

1 个答案:

答案 0 :(得分:1)

如果要在没有UINavigationController的情况下实现应用程序的这一部分,可以通过编程方式设置根UIViewController。首先,将一些故事板ID添加到ViewController2中的Main.storyboard。然后,替换这部分代码:

performSegue(withIdentifier: "toViewController2", sender: self)

let appDelegate = UIApplication.shared.delegate as! AppDelegate
let mainStoryBoard = UIStoryboard(name: "Main", bundle: nil)
let secondViewController = mainStoryBoard.instantiateViewController(withIdentifier: "ViewController2") as! ViewController2
appDelegate.window?.rootViewController = secondViewController

第一个UIViewController出现后,你会看到第二个UIViewController和菜单按钮的处理程序将按你的意愿工作(没有后退)。