我通过Xcode的tvOS“选项卡式应用程序”选项创建了一个测试tvOS应用程序。在第一个标签视图控制器放置一个UIcollectionView与一些简单的文本单元格。tvOS:如何处理TabBar和UICollectionView之间的焦点变化并防止崩溃
当应用程序运行时,可以从标签栏向下移动到UICollectionView,它接受焦点,并且可以在视图的项目之间移动而不会出现问题。
然而,试图移动回升到从UICollectionView标签栏崩溃以下消息的应用程序:
无法投型的值“UITabBarButton”(0x199b92828)到“tabtest.itemCell”( 0x1000153c8)。
我认为这意味着焦点引擎只是“看到”collectionView,并且我必须添加代码来处理跳回到UITabBarButton。
我搜索了高和低的信息如何处理焦点变化,并没有发现任何具体的。作为iOS/tvOS开发的新手,我可能会错过某些明显的东西。
有人可以请解释如何管理标签栏和UICollectionView之间的焦点?
这里是我使用的处理为重点的UICollectionView代码:
// For Focus Engine
func collectionView(collectionView: UICollectionView, didUpdateFocusInContext context: UICollectionViewFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
}
func collectionView(collectionView: UICollectionView, shouldUpdateFocusInContext context: UICollectionViewFocusUpdateContext) -> Bool {
if let cell: UICollectionViewCell = context.nextFocusedView as! itemCell{
_ = self.collectionView.indexPathForCell(cell)
}
return true
}
迟来的感谢贾斯汀。我终于明白代码是错误的,终于弄清楚了。 “如果让细胞:......”是不必要的,并导致崩溃。 –