我在我的一个应用程序上实现了一个单选按钮,就像这个解决方案一样:
http://www.developers-life.com/radio-buttons-in-iphone-application.html
但是我的checkboxButton方法是这样的:
- (IBAction)checkboxButton:(UIButton *)button{
for (UIButton *but in self.arrayButtons) {
if (but == button)
[but setSelected:YES];
else
[but setSelected:NO];
}
}
我有两个属于同一个单选按钮组的按钮。当我选择其中一个按钮时,其图像切换到切换按钮。完善。问题是,当我选择另一个时,它将不会选择选择状态,并且显示为选中的第一个继续显示为选中状态。
任何线索?
答案 0 :(得分:7)
for (UIButton *but in [Your_View subviews]) {
if ([but isKindOfClass:[UIButton class]] && ![but isEqual:button]) {
[but setSelected:NO];
}
}
if (!button.selected) {
button.selected = !button.selected;
}
答案 1 :(得分:0)
为什么你使用如此复杂的只是使用下面的选项..
- (IBAction)checkboxButton:(UIButton *)button
{
button.selected = !button.selected;
}
并确保按钮的图像根据需要在每个状态的xib中设置。
答案 2 :(得分:0)
为了获得所需的功能,您必须在下一个运行循环中执行选择按钮。
所以,从“checkboxButton:”调用另一个方法。
做类似的事情,
- (IBAction)checkboxButton:(UIButton *)button
{
[self performSelector:@selector(highlighButton:) withObject:button afterDelay:0.0];
}
其中“highlightButton:”定义为:
-(void) highlighButton:(UIButton*)aButton
{
[aButton setHighlighted:YES];
for (UIButton* button in self.arrayButtons) {
if (button != aButton) {
[button setHighlighted:NO];
}
}
}
答案 3 :(得分:0)
我只做了一些轻微的调整,我只是测试了它并且它有效。
viewDidLoad://确保所有按钮都分配了相同的选择器
[button1 addTarget:self action:@selector(checkboxButton:) forControlEvents:UIControlEventTouchUpInside];
[button2 addTarget:self action:@selector(checkboxButton:) forControlEvents:UIControlEventTouchUpInside];
[button3 addTarget:self action:@selector(checkboxButton:) forControlEvents:UIControlEventTouchUpInside];
然后稍微修改循环以扫描按钮子视图而不是任意数组中的对象(应该更准确)
- (IBAction)checkboxButton:(UIButton *)button{
for (UIButton *but in self.view.subviews) {//Change "self.view" to what ever view you are adding these subviews to.
if (but == button){
[but setSelected:YES];
}else{
[but setSelected:NO];
}
}
}
请记住,在释放按钮之前,所分配的选定状态图像/文本不会显示。在按钮被释放之前按下按钮时,它处于突出显示状态。这只是一个注释,因此您可以相应地设置它。
答案 4 :(得分:0)
在尝试了这里给出的所有解决方案并且都失败了之后,我尝试了一个新的方法并且它完美地工作了。
解决方案是改变这个
- (IBAction)checkboxButton:(UIButton *)button{
for (UIButton *but in self.arrayButtons) {
if (but == button)
[but setSelected:YES];
else
[but setSelected:NO];
}
}
到这个
- (IBAction)checkboxButton:(UIButton *)button{
for (UIButton *but in self.arrayButtons) {
if (but == button)
[but setImage:selectedImage forState:UIControlStateNormal];
else
[but setImage:normalImage forState:UIControlStateNormal];
}
}
显然,改变按钮状态不会改变其图像。至少对我不起作用。