我想爲標題和圖像的UIButton
我的iPhone應用程序製作標準複選框。按鈕圖像在「未選中」圖像和「已選中」圖像之間切換。製作UIButton複選框的最佳方法是什麼?
起初我嘗試繼承UIButton
,但UIButton
沒有-init***
方法用於我的-init
方法。
這樣做的最好方法是什麼?
在此先感謝。
我想爲標題和圖像的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已經成爲一個複選框,並且功能完美。此外,還包括它是多麼容易使用的示例項目:
我已經在我的項目之一使用M13Checkbox。工作正常。
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