使用字串來表示UIView的tag值

2021-06-27 12:11:05 字數 1745 閱讀 2406

首先宣告這個方法非我原創!

這是乙個同學想出來的

下面我們來說一下具體實現,使用tag值時,因為是乙個毫無意義的數字,使用起來不免麻煩;加入我們使用字串來設定tag值,例如:alabel的tag值為「alabel」,我們定義檢視的時候,肯定不會定義相同名字的,那麼這樣是不是就更便於記了呢。

下面就來具體說說怎麼實現吧,

首先我們要為uiview設定類目: " uiview+tag "

uiview+tag.h :

#import @inte***ce uiview (tag)

- (void)settagwithname:(nsstring *)name;

- (uiview *)viewwithtagname:(nsstring *)name;

@end

uiview+tag.m :

#import "uiview+tag.h"

@implementation uiview (tag)

/** * tag值得偏移

*/static int tagoffset = 1000;

/** * 陣列單例,儲存所有的字串tag值

* * @return 儲存tag值得陣列

*/- (nsmutablearray *)gettagnamearray

); return tagnamearray;

};/**

* 為檢視設定字串tag值

* * @param name 字串tag值

*/- (void)settagwithname:(nsstring *)name

self.tag = ([tagnamearray indexofobject:name] + 1) *tagoffset; //設定數值tag值得偏移

}/**

* 通過字串tag值,獲取對應的檢視

* * @param name 字串tag值

* * @return 字串tag值對應的檢視

*/- (uiview *)viewwithtagname:(nsstring *)name

int tag = ([tagnamearray indexofobject:name] + 1) *tagoffset; //通過獲取到字串tag值所在陣列的的位置,而獲取的儲存的數值tag值

return [self viewwithtag:tag]; //返回數值tag值所對應的檢視

}@end

由此我們可以看到雖然是用字串儲存的tag值,但是內部我們還是使用的整型數字,我們只是對他進行乙個轉換,下面我們來試試能不能用吧

我們建立乙個檢視控制器,在viewdidload中:

- (void)viewdidload

建立乙個text方法:

- (void)test

下面我們看一下列印結果

注意:當你需要在不同的方法中定義檢視物件時,名字也不可以相同,因為雖然陣列中可以儲存相同的字串,我們在取檢視時是根據字串在陣列中下標來取,所以如果陣列中存在相同的字串,在取得時候會造成混淆,取出來的不一定是你想要的

兩個label的位址是一樣的,因為我們內部還是使用的系統的tag值,只不過給他包裝了一層方便使用,會用了麼。

這是乙個同學想出來的方法,一直只是腦子裡想,今天手動實現了一把。。

使用字串程式設計的模板

對函式引數判斷 乙個函式的引數判斷是應該最先考慮的,一般判斷下面的條件。if chars null return 0 if chars 0 0 return 1 字串雙指標的模板 很多時候我們會用雙指標從兩邊遍歷字串,下面就是簡單的模板 bool ispalindrome char s return...

字串 表示數值的字串

題目描述 實現乙個函式用來判斷字串是否表示數值 包括整數和小數以及使用科學計數法表示的數 分析 表示數值的字串的規則有 第乙個字元只能是 以及數字 數字字元後面只能接 或 e e 小數點後面必須要有字元且只能接數字字元或 e e e e 後面必須要接字元且只能接數字字元或者 後面必須要接數字字元 b...

表示數值的字串(字串)

題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。思路 1.第乙個數為 或者為 時,跳過。2.對於小數點 小數點只能出現一次 小數點不...