我有一个布尔值,我想将其设置为按钮的属性:
int tag = (int)[sender tag];
NSString* keyPath = [NSString stringWithFormat:@"addButton%d.hidden", tag];
[self setValue:YES forKey:keyPath];
我无法直接执行此操作,因为addButton的号码会根据发件人的标记进行更改。
我已经尝试过:
setValue:[NSNumber numberWithBool:YES]
但不起作用。
我哪里错了?
答案 0 :(得分:0)
可能是setValue:forKeyPath:
,值必须是对象
[self setValue:@(YES) forKeyPath:keyPath];
答案 1 :(得分:0)
整个问题基于糟糕的架构。拥有属性addButton1
,addButton2
,addButton3
等首先很难处理。每当您看到自己在属性末尾添加数字时,请改用数组。
NSArray *addButtons = @[self.addButton1, self.addButton2, self.addButton3];
然后简单地
[addButtons[sender.tag - 1] setHidden:YES];
使用KVC仅适用于特定情况。如果您是初学者,请尽量不要使用它。过度使用它是一个坏习惯。直接访问属性,而不是使用字符串名称。