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 = 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.
}
}
我的 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 = 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.
}
}