UISegmentControl没有执行目标方法?

时间:2014-09-03 10:06:58

标签: ios objective-c uisegmentedcontrol

我有一个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");

}

}

3 个答案:

答案 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