您好,登錄后才能下訂單哦!
在iPhone開發(fā)中UISwitch相當(dāng)于其他UI庫中的Checkbox,使用的時候推薦優(yōu)先選用。但有些人還是會尋求在應(yīng)用中使用他們更為熟悉的Checkbox,在一次項目的開發(fā)中我就遇到了這樣的需求。本文將探討一種比目前很多實現(xiàn)(比如iPhone UIButton tutorial : Custom Checkboxes)都更簡潔的方案,主要原理就是充分利用UIButton的selected屬性。
Checkbox聲明:
@interface CheckBox : UIButton {
}
@end
Checkbox實現(xiàn):
@implementation CheckBox
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self initilization];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aCoder {
if (self = [super initWithCoder:aCoder]) {
[self initilization];
}
return self;
}
- (void)initilization {
[self removeTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];
[self addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)onClick: (id)sender {
self.selected = ![self isSelected];
}
@end
其中,initWithFrame和initWithCoder分別用于支持代碼創(chuàng)建和IB創(chuàng)建CheckBox時的初始化工作,并在初始化時添加一個點擊時的處理函數(shù)onClick。onClick用于選擇狀態(tài)取反。實際應(yīng)用可以對UIControlEventTouchUpInside事件添加實際需要的處理函數(shù)。
簡單吧!能夠這樣實現(xiàn)的原因就在于UIButton有Normal、Active、Selected以及Disabled等多種狀態(tài),本質(zhì)上是包含了Checkbox所需的功能。通過上述的繼承可以封裝了點擊后狀態(tài)取反的邏輯,使得在將UIButton當(dāng)做Checkbox使用的場景下更友好!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。