我有一个tableViewCell子类,其中有一个segmentControl。我正在尝试向其添加目标,但这不起作用。问题是什么?
我已将其添加到XIB文件中并按此声明。
@interface MyCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UISegmentedControl *deckSwitch;
@end
在viewDidLoad
我正在设定这样的目标。
[myCell.deckSwitch addTarget:self action:@selector(selectDeckView:) forControlEvents:UIControlEventValueChanged]; //Also tried UIContolEventTouchUpInside,but doesn't work.
并像这样使用它。
-(void)selectDeckView:(UISegmentedControl*)sender{
if (sender.selectedSegmentIndex==0) {
NSLog(@"segment 0");
}else if (sender.selectedSegmentIndex==1){
NSLog(@"segment 1");
}
}
答案 0 :(得分:1)
您的@selector(selectView:)
和方法名称应该相同。
[myCell.deckSwitch addTarget:self action:@selector(selectView:) forControlEvents:UIControlEventValueChanged];
-(void)selectView:(UISegmentedControl*)sender{ `
`
if (sender.selectedSegmentIndex==0) {
NSLog(@"segment 0");
}else if (sender.selectedSegmentIndex==1){
NSLog(@"segment 1");
}
}
答案 1 :(得分:1)
试试这个..
在cellForRowAtIndexPath
:方法中添加目标,而不是viewDidLoad
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *myCell = [tableView dequeueReusableCellWithIdentifier:@"MyCell"];
if (myCell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil];
myCell = [nib objectAtIndex:0];
}
[myCell.deckSwitch addTarget:self action:@selector(selectDeckView:) forControlEvents:UIControlEventValueChanged];
return myCell;
}
答案 2 :(得分:0)
如果选择器是错误的..然后会发生崩溃..似乎目标正在迷失在牢房上。尝试在ViewDidAppear
中添加选择器。由于视图尚未出现,我担心您的细胞尚未创建。请在行中加上一个断点
[myCell.deckSwitch addTarget:self action:@selector(selectDeckView:) forControlEvents:UIControlEventValueChanged]; //Also tried UIContolEventTouchUpInside,but doesn't work.
并检查myCell
的值是否为nil
?