Swift 区分didUpdateFocus()中的UIButton

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。我的代码是这样的:

我的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。我的代码是这样的:

    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.
    }
}