最近時間相對充足一些,正好這時候把最近一年左右的項目筆記給整理,并依次發(fā)布出來。
1 類別綁定屬性
問題:
如上圖所示,項目中在這個頁面是個自定義cell,但是每個cell中有個Switch按鈕,點擊之后,需要根據(jù)當(dāng)前cell的數(shù)據(jù)進行后續(xù)的一些操作。
ps:這個應(yīng)該是在開發(fā)中最經(jīng)常遇到的一個小問題了,可以通過找superview的方式,一步一步找到當(dāng)前Switch所在的cell,然后進行處理。
但是這時候就可以運用runtime進行給Switch類動態(tài)添加一個屬性,可以很方便的處理好。
新建一個Switch的category文件 .h文件聲明一個屬性
@property (nonatomic,strong) id indexRow;
接著在.m文件中實現(xiàn)set get兩個方法
并且需要定義一個key
static char IndexRowKey;
- (void)setIndexRow:(id)indexRow
{ /** @param object#> 綁定的對象 一般都是self @param key#> 用于存取值 即綁定的這個對象 @param value#> 關(guān)聯(lián)對象的值 這個是需要傳入id類型的,若不是 需要@()轉(zhuǎn)換一下 @param policy#> 關(guān)聯(lián)對策 */ return objc_setAssociatedObject(self, &IndexRowKey, indexRow, OBJC_ASSOCIATION_RETAIN_NONATOMIC); }
- (id)indexRow
{ return objc_getAssociatedObject(self, &IndexRowKey); }
2 動態(tài)添加方法
運用給類別綁定一個屬性,在開發(fā)中,我們可以給UIView添加一個寬或高的屬性,開發(fā)中就不需要多次打點.才能拿到對應(yīng)的寬高值。