didUpdateFocus()中区分UIButton

Differentiate between UIButton in didUpdateFocus()

我的 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 中的按钮不同?

最简单的方法可能是为每个按钮分配一个 tag,例如 buttonA.tag = 1buttonB.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.
    }
}