Iphone 制作UIButton复选框的最佳方法是什么?
我正在尝试从带有标题和图像的Iphone 制作UIButton复选框的最佳方法是什么?,iphone,objective-c,checkbox,uibutton,Iphone,Objective C,Checkbox,Uibutton,我正在尝试从带有标题和图像的ui按钮为我的iPhone应用程序创建一个标准复选框。按钮图像在“未选中”图像和“已选中”图像之间切换 起初,我尝试子类化UIButton,但UIButton没有-init***方法可用于我的-init方法 最好的方法是什么 提前感谢。您是否尝试重写initWithCoder方法,以防它以某种方式从nib加载?您不需要对UIButton类进行子类化。通过设计,Objective-C更倾向于组合而不是继承 UIButton是UIControl的一个子类,它有一个选定的属
ui按钮
为我的iPhone应用程序创建一个标准复选框。按钮图像在“未选中”图像和“已选中”图像之间切换
起初,我尝试子类化UIButton
,但UIButton
没有-init***
方法可用于我的-init
方法
最好的方法是什么
提前感谢。您是否尝试重写initWithCoder方法,以防它以某种方式从nib加载?您不需要对
UIButton
类进行子类化。通过设计,Objective-C更倾向于组合而不是继承
UIButton
是UIControl
的一个子类,它有一个选定的
属性。您可以使用此属性切换复选框的开/关行为,就像ui开关那样
您可以将操作附加到按钮的内部事件,并在其中执行切换,如下所示:
// 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
}
在按钮中设置图像:
[button setImage:uncheckedImage forState:UIControlStateNormal]
[button setImage:checkedImage forState:UIControlStateSelected]
现在,您需要做的就是:
button.selected = state
并且将显示正确的图像。您需要做的就是为状态设置两个不同的图像UIControlStateNormal
和UIControlStateSelected
,然后在选择器中更改按钮的selected
属性
下面是一个工作示例(用您自己的名称替换图像名称):
对于任何对未来感兴趣的人-与其自己做,不如从GitHub下载下面的链接,它已经从UIControl中进行了子类化,并且可以完美地作为复选框使用。还包括一个示例项目,说明它的易用性:
我在一个项目中使用了M13Checkbox。工作正常
您可以使用谷歌图标的图像尝试以下操作:-
-(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];
}
}
为什么不用开关呢?这用于显示一个元素,该元素显示值的布尔状态。您也可以使用一行代码来完成此操作<代码>myCheckboxButton.selected=!myCheckboxButton.selected
您可以通过设置按钮状态UIControlStateSelected;)的图像来避免if-else@Diziet您可以使用XOR(类似于这样的XOR)获得更多的黑客行为:myCheckboxButton.selected^=1不是一个真正的答案。他不想尝试的是什么?我的意思是一个人不总是想尝试没有解释的东西
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];
}
}