如何从UITabBarController将初始焦点设置为viewController中的按钮?

时间:2016-01-11 17:12:10

标签: uitabbarcontroller tvos apple-tv

我有一个UITabBarController的基本应用程序,它包含2个UIViewControllers。 第一个ViewController中有一个UIButton。

我试图隐藏tabBar菜单,并在应用启动时关注按钮。 我将tabBar设置为隐藏,并且在启动时不会按预期显示。不幸的是,按钮没有焦点。

根据我对Apple doc的理解,"焦点链"引擎将焦点设置在窗口层次结构中的第一个可见和可聚焦项目上。

任何人都可以帮我这个吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

解决方案1。 我想你能做什么:

1.Subclass或Customize TabBarController和set    在tabController的viewdidload中设置first launch = true

> override weak var preferredFocusedView: UIView? {   if
> (self.firstLaunch) {
>     self.firstLaunch = false;
>     return self.selectedViewController!.preferredFocusedView;   }   else {
>     let view  = super.preferredFocusedView
>     return view;   }

希望它有所帮助。虽然它为我工作

您的焦点引擎将rootView控制器作为TabBarController,然后请求首选焦点视图,该视图以UITabBarItem的形式返回,我们需要对该子类进行非聚焦并将canBecomeFocus返回NO。

如果你想改变firtsViewController中元素的焦点,那么你可以覆盖func preferredFocusView并重新定义你想要聚焦的视图,而不是preferredFocusView

解决方案2.只需将根视图控制器设置为不带TabBarController的HomeViewController,并从第二页嵌入TabBarController。这是因为无论如何你不需要在第一页上使用TabBar,为什么需要关注它。

如果您从AppDelegate或已加载但具有焦点的视图中隐藏,TabBar将设置为隐藏。