我有一个Swift3 tvOS应用程序,在其中我从一个ViewController过渡到另一个使用performSegue(withIdentifier:…)。在第二个视图控制器中,我使用菜单按钮进行UI交互,使用pressesBegan with press。type == uipresstyle .menu.
如果直接输入第二个ViewController(即默认的ViewController),这可以正常工作,但是随着过渡,当按下菜单按钮时,应用程序再次显示第一个ViewController(菜单在tvOS中翻倍)。我的第二个ViewController也得到了键,但是UI结果从来没有显示,因为第二个ViewController消失了。我已经尝试了不同的segue类型,但无济于事。
问题:
1)是否有一种方法来"消费"菜单键事件,所以它永远不会到达操作系统?
2)或者,我可以以某种方式制作"单向segue"吗?
3)备选方案2:我可以通过编程方式取消设置两个视图控制器之间的关系吗?是什么让一个人成为另一个人的"父母"?我不用导航控制器之类的,所以一定是segue
谢谢,
如果您想在没有UINavigationController
的情况下实现应用程序的这一部分,您可以通过编程方式设置根UIViewController
。首先,为Main.storyboard
中的ViewController2
添加一些故事板id。然后,替换这部分代码:
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和菜单按钮的处理程序将按照你的意愿工作(没有back segue)。