2010-08-05 75 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];