溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

iPhone How-to:如何實現(xiàn)Checkbox

發(fā)布時間:2020-06-24 22:03:24 來源:網(wǎng)絡(luò) 閱讀:2813 作者:benjielin 欄目:開發(fā)技術(shù)

   在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使用的場景下更友好!

向AI問一下細(xì)節(jié)

免責(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)容。

AI