代码之家  ›  专栏  ›  技术社区  ›  iSD

UISegmentControl未执行目标方法?

  •  0
  • iSD  · 技术社区  · 11 年前

    我有一个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 回复  |  直到 11 年前
        1
  •  1
  •   Ravi    11 年前

    试试这个。。

    将目标添加到内部 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
  •  1
  •   Ravi    11 年前

    你的 @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");
    
    }
    
    }
    
        3
  •  0
  •   devluv    11 年前

    如果选择器错误。。那么就会发生车祸。。目标似乎在手机上迷路了。尝试在中添加选择器 ViewDidAppear 。由于视图尚未出现,我担心您的单元格尚未创建。请在行中放置断点

    [myCell.deckSwitch addTarget:self action:@selector(selectDeckView:) forControlEvents:UIControlEventValueChanged];  //Also tried UIContolEventTouchUpInside,but doesn't work.
    

    并检查 myCell nil 还是不?