好的,这是我的问题 例如,我在前3个单元的附件中创建了一个UISwitch
theSwitch = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];
[cell addSubview:theSwitch];
cell.accessoryView = theSwitch;
并在接下来的3个单元格中添加2个滑块
theSlider = [[[UISlider alloc] initWithFrame:CGRectMake(174,12,120,23)] autorelease];
theSlider.maximumValue=99;
theSlider.minimumValue=0;
[cell addSubview:theSlider];
cell.accessoryView = theSlider;
之后,我添加动作切换和滑块
[(UISwitch *)cell.accessoryView addTarget:self action:@selector(switchToggled:) forControlEvents:UIControlEventValueChanged];
[(UISlider *)cell.accessoryView addTarget:self action:@selector(sliderValueChange:) forControlEvents:UIControlEventValueChanged];
只有在单元格中添加开关
才有效我认为这可能是我的@selector(switchToggled:)
和@selector(sliderValueChange:)
问题。
如果我切换UISwitch,它不会崩溃
但如果我触摸任何滑块,它会崩溃并收到消息:“[UISlider isOn]:无法识别的选择器发送到实例”
这是我的无效
- (void)switchToggled:(id)sender{
UISwitch *theSwitch = (UISwitch *)sender;
UITableViewCell *cell = (UITableViewCell *)theSwitch.superview;
UITableView *tableView = (UITableView *)cell.superview;
NSIndexPath *indexPath = [tableView indexPathForCell:cell];
if(theSwitch.on) {
...
}
else {
...
}
}
sliderValueChange
与
- (void)sliderValueChange:(id)sender{
UISlider *theSlider = (UISlider *)sender;
UITableViewCell *cell = (UITableViewCell *)theSlider.superview;
UITableView *tableView = (UITableView *)cell.superview;
...
}
有谁知道如何给两个控制器一个动作?
非常感谢!
答案 0 :(得分:2)
<强>更新强>
评论之后,这是一个你应该使用的通用选择器
注意:您只需使用此选择器调用addTarget一次。
-(void)generalSelector:(id)sender{
if ([sender isKindOfClass:[UISlider class]]){
UISlider *slider = (UISlider *)sender;
NSLog(@"Slider value %f",slider.value);
}else{
UISwitch *temp = (UISwitch *)sender;
NSLog(@"Switch is %@",temp.on?@"ON":@"OFF");
}
}