制作UIButton复选框的最佳方法是什么?
我想为标题和图像的UIButton
我的iPhone应用程序制作标准复选框。按钮图像在“未选中”图像和“已选中”图像之间切换。制作UIButton复选框的最佳方法是什么?
起初我尝试继承UIButton
,但UIButton
没有-init***
方法用于我的-init
方法。
这样做的最好方法是什么?
在此先感谢。
您应该不需要继承UIButton
类。通过设计,Objective-C支持合成而不是继承。
UIButton
是UIControl
的子类,它具有selected
属性。您可以使用此属性切换复选框的开启/关闭行为,就像UISwitch
一样。
您可以附加到按钮的行动感动了内部事件,并在那里进行来回切换,这样的事情:
// when you setup your button, set an image for the selected and normal states
[myCheckBoxButton setImage:checkedImage forState:UIControlStateSelected];
[myCheckBoxButton setImage:nonCheckedImage forState:UIControlStateNormal];
- (void)myCheckboxToggle:(id)sender
{
myCheckboxButton.selected = !myCheckboxButton.selected; // toggle the selected property, just a simple BOOL
}
你是否尝试覆盖initWithCoder方法,以防万一它以某种方式从一个nib加载?
真的没有答案。 – 2014-07-03 12:47:03
设置的按钮图像:
[button setImage:uncheckedImage forState:UIControlStateNormal]
[button setImage:checkedImage forState:UIControlStateSelected]
现在所有你需要做的是:
button.selected = state
和正确的图像将显示。
有用的答案... – Biranchi 2013-08-20 09:49:17
您需要做的就是为状态UIControlStateNormal
和UIControlStateSelected
设置2个不同的图像,然后在您的选择器中更改该按钮的selected
属性。
这里是工作示例(换成你自己的图片名称):
- (void)loadView {
// ...
UIButton *chkBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[chkBtn setFrame:CGRectMake(0, 0, 300, 25)];
[chkBtn setImage:[UIImage imageNamed:@"UNCHECKED.png"]
forState:UIControlStateNormal];
[chkBtn setImage:[UIImage imageNamed:@"CHECKED.png"]
forState:UIControlStateSelected];
[chkBtn addTarget:self
action:@selector(chkBtnHandler:)
forControlEvents:UIControlEventTouchUpInside];
// Optional title change for checked/unchecked
[chkBtn setTitle:@"I am NOT checked!"
forState:UIControlStateNormal];
[chkBtn setTitle:@"I am checked!"
forState:UIControlStateSelected];
[self.view addSubview:chkBtn];
[chkBtn release], chkBtn = nil;
// ...
}
- (void)chkBtnHandler:(UIButton *)sender {
// If checked, uncheck and visa versa
[sender setSelected:!sender isSelected];
}
任何有兴趣在未来的 - 而不是做自己刚刚从GitHub下载下面的链接,它已经从子类UIControl已经成为一个复选框,并且功能完美。此外,还包括它是多么容易使用的示例项目:
UIImage* nonCheckedImage=[UIImage imageNamed:@"ic_check_box_outline_blank_grey600_48dp.png"];//[UIImage init
UIImage* CheckedImage=[UIImage imageNamed:@"ic_check_box_black_48dp.png"];//[UIImage init
//ic_check_box_black_48dp.png
[_checkBox setImage:CheckedImage forState:UIControlStateSelected];
[_checkBox setImage:nonCheckedImage forState:UIControlStateNormal];
}
- (IBAction)checkBoxToggle:(id)sender {
_checkBox.selected = !_checkBox.selected; // toggle the selected property, just a simple BOOL
}
的图像,你可以使用谷歌图标
试试这个: -
-(IBAction)clickCheckButton:(UIButton *)sender {
if (sender.tag==0) {
sender.tag = 1;
[sender setImage:[UIImage imageNamed:@"check.png"] forState:UIControlStateNormal];
}else
{
sender.tag = 0;
[sender setImage:[UIImage imageNamed:@"uncheck.png"] forState:UIControlStateNormal]; } } sender.tag = 0;
[sender setImage:[UIImage imageNamed:@"uncheck.png"] forState:UIControlStateNormal];
}
}
为什么不使用一个开关 - UISwitch?这用于显示一个显示值的布尔状态的元素。
你也可以用一行来做这件事。 'myCheckboxButton.selected =!myCheckboxButton.selected' – Diziet 2012-11-01 12:17:53
你可以通过设置按钮状态的图像来避开if-else UIControlStateSelected;) – Climbatize 2013-05-22 07:52:38