2014-09-03 106 views
0

我有一個tableViewCell的子類,其中有一個segmentControl.I試圖添加目標到它不工作。問題是什麼?UISegmentControl不執行目標方法?

我已經將它添加到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"); 

} 

} 
+2

選擇您在viewDidLoad中提供和實現的方法不配套... – raki 2014-09-03 10:09:52

+0

哎呀我很抱歉。其在寫問題時出現錯字,但在代碼中也是一樣。只是它不起作用。 – iSD 2014-09-03 10:13:11

+0

首先你檢查你是否初始化'MyCell'? – 2014-09-03 10:34:15

回答

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; 

} 
+0

好吧thankyou.it工作; - ] – iSD 2014-09-03 11:02:03

+0

快樂的iCoding ..;) – raki 2014-09-03 11:09:13

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"); 

} 

} 
+0

是的,我知道。它的代碼實際上是一樣的,但它仍然不起作用。 – iSD 2014-09-03 10:20:41

0

如果選擇器是錯誤的,那麼會發生崩潰..這似乎是目標在單元格上迷路了。嘗試在ViewDidAppear中添加選擇器。由於沒有出現,我擔心你的手機還沒有創建。請把斷點在該行

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

,並檢查是否爲myCellnil與否?