cdu*_*uck 11 iphone checkbox objective-c uibutton
我正在尝试UIButton
使用标题和图像为我的iPhone应用程序制作一个标准复选框.按钮图像在"未选中"图像和"已检查"图像之间变化.
起初我尝试了子类化,UIButton
但UIButton
没有-init***
方法可以在我的-init
方法中使用.
做这个的最好方式是什么?
提前致谢.
Jas*_*ien 42
您不应该为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
}
Run Code Online (Sandbox Code Playgroud)
在按钮中设置图像:
[button setImage:uncheckedImage forState:UIControlStateNormal]
[button setImage:checkedImage forState:UIControlStateSelected]
Run Code Online (Sandbox Code Playgroud)
现在你需要做的就是:
button.selected = state
Run Code Online (Sandbox Code Playgroud)
并显示正确的图像.
所有你需要做的是设置2幅不同的图像的状态UIControlStateNormal
和UIControlStateSelected
,然后在你的选择,改变了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];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
36866 次 |
最近记录: |