您好,登錄后才能下訂單哦!
在iPhone開發中UISwitch相當于其他UI庫中的Checkbox,使用的時候推薦優先選用。但有些人還是會尋求在應用中使用他們更為熟悉的Checkbox,在一次項目的開發中我就遇到了這樣的需求。本文將探討一種比目前很多實現(比如iPhone UIButton tutorial : Custom Checkboxes)都更簡潔的方案,主要原理就是充分利用UIButton的selected屬性。
Checkbox聲明:
@interface CheckBox : UIButton {
}
@end
Checkbox實現:
@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分別用于支持代碼創建和IB創建CheckBox時的初始化工作,并在初始化時添加一個點擊時的處理函數onClick。onClick用于選擇狀態取反。實際應用可以對UIControlEventTouchUpInside事件添加實際需要的處理函數。
簡單吧!能夠這樣實現的原因就在于UIButton有Normal、Active、Selected以及Disabled等多種狀態,本質上是包含了Checkbox所需的功能。通過上述的繼承可以封裝了點擊后狀態取反的邏輯,使得在將UIButton當做Checkbox使用的場景下更友好!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。