2010-08-05 74 views
3

是否可以動態構建屬性或函數調用?我有一套我想以相同方式呈現的視圖。所以如果我的部分代碼是這樣的目標中動態生成的屬性/函數調用C

self.ViewName.hidden = NO;

,我想用一個變量視圖的名字,有沒有辦法做到這一點,像

自{VAR} .hidden = NO;

其中'var'是視圖名稱的NSString並在運行時進行評估?我知道這不會用尖括號,只是爲了說明我如何構建屬性引用。

感謝

+1

我在想爲什麼你現在要這麼做幾個小時......當你知道名稱並聲明屬性時,爲什麼不直接使用它們呢? – Eiko 2010-08-06 00:18:43

回答

2

您可以動態地得到使用NSSelectorFromString功能在運行時選擇。所以,如果你想獲得的viewName基於字符串你可以使用

[[self performSelector:NSSelectorFromString(@"ViewName")] setHidden:NO]; 
+0

感謝DHamrick,完美工作 – thekonger 2010-08-05 14:47:04

+0

只要不要忘記檢查'self'是否響應您創建的選擇器,否則如果您的視圖名稱不正確,您的應用可能會崩潰 – Vladimir 2010-08-05 14:50:39

0

您可以使用setValue:forKeyPath:方法:

NSString* path = [NSString stringWithFormat:@"%@.hidden", viewName]; 
[self setValue:[NSNumber numberWithBool:YES] forKeyPath:path]; 
0

如果你有多個視圖,你應該把它們放在一個數組和訪問陣列的每個元素分開。

NSMutableArray * views... 
[[views objectAtIndex:i] setHidden:NO];