我有这个“观察者”观察UISwitch的价值变化:
[cell.switcher addTarget:self action:@selector(switched:withName:) forControlEvents:UIControlEventValueChanged];
当值改变时,调用此方法:
-(void)switched:(UISwitch *)switcher withName:(NSString *)name;
正如您所看到的,我需要使用第一个代码传递两个对象。如何通过addTarget:action:forControlEvents方法发送nsstring和uiswitch的对象,以便我可以在选择器中访问它们:withname?
谢谢,
凯文 编辑:我对obj-c不是很好,并没有真正正确地学习这些条款,所以如果我犯了错误请告诉我!答案 0 :(得分:3)
最好的方法是标记UISwitch对象:
uiSwitch1.tag = 0;
uiSwitch2.tag = 1;
...
然后在您的switched:
方法上,您可以测试发件人的代码并在那里定义字符串:
-(void)switch:(id)sender {
switch ([sender tag]) {
case 0:
// set the string for uiSwitch1
case 1:
// set the string for uiSwitch2
...
}
}
答案 1 :(得分:1)
你做不到。 UIControl操作的选择器只会传回发送方(在本例中为您的cell.switcher)。您应该找到一种方法,根据发件人的操作和ID识别您需要的字符串。