2014-06-14 2 views
0

어제 제대로 작동하지 않은 일부 코드가 올바르게 작동하지 않는 것 같습니다. 내 cellForRowAtIndexPath: 메서드에서 선택기를 추가하고 있지만 항상 PAYPHProductTableViewCell valueChanged:]: unrecognized selector sent to instance 0x8d6a6c0을 throw합니다.인스턴스로 보내지는 인식 할 수없는 선택기 (스테퍼)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (indexPath.row == 0) 
    { 
     //some code 
    } 
    else 
    { 
     NSString *cellIdentifier = @"PAYPHProductTableViewCell"; 
     PAYPHProduct *product = self.myCart[indexPath.row - 1]; 
     PAYPHProductTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

     if (cell == nil) 
     { 
      NSArray *nib = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil]; 
      cell = [nib objectAtIndex:0]; 
     } 

     [cell loadName:product.name Price:product.price Quantity:product.quantity]; 
     [cell.stepper addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged]; 
     return cell; 
    } 
} 

을 그리고 여기 선택입니다 : 여기 내 코드는

- (IBAction)valueChanged:(UIStepper *)sender 
{ 
    int value = [sender value]; 
    CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView]; 
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition]; 
    ((PAYPHProduct *) self.myCart[indexPath.row - 1]).quantity = value; 
    [self updateNumItemsAndSubtotal]; 
    [self.tableView reloadRowsAtIndexPaths:@[indexPath, [NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationNone]; 
} 

이 모든 코드 내의 ViewController 클래스에 있습니다. 다른 답변을 통해 메소드 서명을 동일하게 만들었지 만 이는 도움이되지 못합니다. 누군가가 무슨 일이 일어 났는지 설명 할 수 있다면 좋을 것입니다. 고마워요.

+0

스테퍼 대신 셀에 valueChanged :를 호출하고 있다는 오류 메시지가 표시됩니다. cell.stepper가 스테퍼 대신 셀을 재조정하지 않는 한 게시 한 코드가 어떻게되는지는 알 수 없습니다. 이상하게 들릴 수도 있지만 cell.stepper를 반환하여 반환되는 내용을 확인해야합니다. 예외 브레이크 포인트를 추가하여 오류의 원인이되는 행을 확인할 수도 있습니다. – rdelmar

답변

1

예외 메시지는 모든 것을 거의 설명합니다. 프로그램은 그것을 인식하지 못하는 객체에 메시지를 보낸다. 다음은 코드를 확인하는 몇 가지 제안입니다.

  1. 셀의 .xib 파일을 확인하고 UIStepper 클래스가 해당 객체 (콘센트가있는 경우)에 올바르게 설정되어 있는지 확인하십시오.
  2. 스테퍼 속성을 수정하지 않았는지 확인하십시오. 속성의 setter 메서드를 재정의하거나 키 - 값 옵저버를 추가하여이를 확인할 수 있습니다.
  3. 개인적으로 더 나은 방법은 셀과 viewController 사이의 간단한 위임을 사용하는 것입니다.
+0

감사합니다. 무슨 일이 있었는지 모르겠지만 콘센트를 분리했다가 다시 연결하면 효과가있었습니다. – Impossibility

관련 문제