2015-07-11 99 views
-2

的财产我有我想设置为一个按钮的属性一个布尔值:根据发件人的标签使用BOOL作为按钮

int tag = (int)[sender tag]; 
NSString* keyPath = [NSString stringWithFormat:@"addButton%d.hidden", tag]; 
[self setValue:YES forKey:keyPath]; 

我不能直接这样做,因为Add按钮的数量变化。

我已经试过:

setValue:[NSNumber numberWithBool:YES] 

,但不起作用。

我在哪里错了?

回答

0

这整个问题是基于错误的架构。有属性addButton1,addButton2,addButton3等是很难与首要工作。每当您看到自己在属性的末尾添加数字时,请改用数组。

NSArray *addButtons = @[self.addButton1, self.addButton2, self.addButton3]; 

,然后简单地

[addButtons[sender.tag - 1] setHidden:YES]; 

使用KVC只是针对具体情况良好。如果你是初学者,尽量不要使用它。过度使用它是一个坏习惯。直接访问属性,不使用字符串名称。

+0

谢谢,工作!只有一件事:我使用[addButtons [[sender tag]] ...]使其工作,否则它给了我一个错误。 –

+0

@MatteoLaMendola它取决于你的按钮是以“0”还是“1”开始。 – Sulthan

0

这可能setValue:forKeyPath:,该值必须是一个对象

[self setValue:@(YES) forKeyPath:keyPath]; 
+0

反正无法使用。 –