对于 iPhone,我找不到任何类似单选按钮的东西,它可以触发组中的其他按钮。那么每个人都会建议使用什么?UISwitch 我猜并在选择其他人时做一些事情来触发组中的其他人?
如果我有几个 UISwitch 对象,我将如何触发其他对象与我切换的对象相反?
对于 iPhone,我找不到任何类似单选按钮的东西,它可以触发组中的其他按钮。那么每个人都会建议使用什么?UISwitch 我猜并在选择其他人时做一些事情来触发组中的其他人?
如果我有几个 UISwitch 对象,我将如何触发其他对象与我切换的对象相反?
我使用带有像单选按钮一样的图像的按钮。即关闭图像和打开图像。这种方法的好处是实现起来非常简单,您可以使用图像来控制按钮控件的状态。它作为一个简单的切换工作,不需要花哨的按钮状态。您可以轻松地将代码添加到在按钮打开或关闭时执行某些操作的方法中,在示例中我只是调用一个正在编写一些用户默认值的方法。
它应该很容易适应创建单选按钮功能。
-(IBAction)tickboxControl:(id)sender{
NSLog(@"%s",__FUNCTION__);
bgImageOn = [UIImage imageNamed:@"tickedBox.png"];
bgImageOff = [UIImage imageNamed:@"tickBoxEmpty.png"];
UIButton *buttonClicked = (UIButton *)sender;
UIImage *imageOfClicked = [buttonClicked imageForState:UIControlStateNormal];
if (imageOfClicked == bgImageOff) {
[self setButtonFlags: [NSNumber numberWithInt:[sender tag]] : [NSNumber numberWithInt:1] ];
[buttonClicked setImage:bgImageOn forState:UIControlStateNormal];
} else{
[self setButtonFlags: [NSNumber numberWithInt:[sender tag]] : [NSNumber numberWithInt:0] ];
[buttonClicked setImage:bgImageOff forState:UIControlStateNormal];
}
}
我创建了一个项目,该项目准确地展示了如何实现您要求做的事情。您可以将图形从复选框(我发现在设备上更好地查看和理解)更改为单选按钮。
阅读调试日志以了解逻辑。
如果您有任何问题,请给我留言。
[这是对您下面评论的回复]
我还使用了自定义 UISegmentedControl。像这样的东西:
NSMutableArray* buttons;
- (void)touchDownAction:(UIButton*)button {
[self dimAllButtonsExcept:button];
if ([delegate respondsToSelector:@selector(touchDownAtSegmentIndex:)])
[delegate touchDownAtSegmentIndex:[buttons indexOfObject:button]];
}
-(void) dimAllButtonsExcept:(UIButton*)selectedButton {
for (UIButton* button in buttons) {
if (button == selectedButton) {
button.selected = YES;
button.highlighted = YES;
} else {
button.selected = NO;
button.highlighted = NO;
}
}
}
完整代码位于https://github.com/j4n0/jobsket/tree/master/sources/main/ui/custom/segControl
我使用 UISegmentedControl 作为单选按钮。
试试这个 iOS 中的单选按钮:
@interface RadioButtonViewController : UIViewController
{
//for radio button
IBOutlet UIButton *radioButton1;
IBOutlet UIButton *radioButton2;
IBOutlet UITextField *selectedValue;
IBOutlet UILabel *label1;
IBOutlet UILabel *label2;
}
@property (nonatomic,retain) IBOutlet UIButton *radioButton1;
@property (nonatomic,retain) IBOutlet UIButton *radioButton2;
@property (nonatomic,retain) IBOutlet UITextField *selectedValue;
-(IBAction)userChangedButtonClicked:(id)sender
@end
在 .m 文件中编写代码,并在情节提要检查器窗口中指定默认和选定图像,并为每个按钮提供标记值。
RadioButtonViewController.m
-(IBAction)userChangedButtonClicked:(id)sender
{
UIButton *senderBtn = (UIButton*)sender;
if (senderBtn.tag == 101 && !self.radioButton1.selected)
{
self.radioButton1.selected = TRUE;
self.radioButton2.selected = FALSE;
selectedValue.text = label1.text;
}else if (senderBtn.tag == 102 && !self.radioButton2.selected)
{
self.radioButton1.selected = FALSE;
self.radioButton2.selected = TRUE;
selectedValue.text = label2.text;
}
}