Swift 区分didUpdateFocus()中的UIButton
我的MainViewController有3个容器:Swift 区分didUpdateFocus()中的UIButton,swift,focus,tvos,Swift,Focus,Tvos,我的MainViewController有3个容器: | A | B | C| 其中A包含tableView,B包含collectionView,C包含imageView。A和C中的tableView和imageView是隐藏的,仅当焦点位于A或C上时才应显示。我在A和C上还有两个按钮(位于tableView和imageView的顶部) 我遇到的问题是,每当我将焦点从collectionView移到A或C时,xcode都无法识别我是要到A还是C。我的代码是这样的:
| A | B | C|
其中A包含tableView,B包含collectionView,C包含imageView。A和C中的tableView和imageView是隐藏的,仅当焦点位于A或C上时才应显示。我在A和C上还有两个按钮(位于tableView和imageView的顶部)
我遇到的问题是,每当我将焦点从collectionView移到A或C时,xcode都无法识别我是要到A还是C。我的代码是这样的:
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
super.didUpdateFocus(in: context, with: coordinator)
if context.nextFocusedView is UIButton && context.previouslyFocusedView is UICollectionViewCell {
print("Focus moved to left column")
}
}
如何告诉xcode A中的按钮与C中的按钮不同?最简单的方法可能是为每个按钮分配一个
标记,例如buttonA.tag=1
,buttonB.tag=2
等。然后在didUpdateFocus…
中,您可以通过稍微更改代码来检查它是哪个按钮,对这样的事情:
if let button = context.nextFocusedView as? UIButton, context.previouslyFocusedView is UICollectionViewCell {
switch button.tag {
case 1:
// This is button A. Do whatever you need with that info
case 1:
// This is button B...
etc.
}
}