ios – 选择一个UIButtons时取消选择

我在游戏中设置了八(8)个UIButtons.选择一个时,它会显示它已被选中,如果再次单击它,它将显示为未选中.但是,我想这样做,以便当您选择一个按钮并选择其他七(7)中的任何一个时,它们将被取消选中.

我知道如何通过使用[buttonName setSelected:NO]来做到这一点,但问题是我无法将buttonOne传递给buttonTwo,如果buttonTwo已经传递给buttonOne,因为我已经在buttonOne中导入了buttonTwo的头文件.如果我有两个标题互相导入,它会抛出一个解析错误.我已经被困在这一段时间了,并希望有人可以解决我的问题.

谢谢你的帮助.

解决方法

获取当前按钮的父视图并遍历内部的所有按钮,取消选中所有按钮.然后,选择当前的那个.
// Unselect all the buttons in the parent view
for (UIView *button in currentButton.superview.subviews) {
    if ([button isKindOfClass:[UIButton class]]) {
        [(UIButton *)button setSelected:NO];
    }
}

// Set the current button as the only selected one
[currentButton setSelected:YES];

注意:正如评论中所建议的那样,您可以保留一组按钮,并按照上述代码与父视图的子视图相同的方式进行检查.如果包含按钮的视图中包含许多其他子视图,这将提高代码性能.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...