0

そのため、昨日は正常に動作していた一部のコードが正しく動作していないようです。メソッドにセレクターを追加してcellForRowAtIndexPath:いますが、常にスローされPAYPHProductTableViewCell valueChanged:]: unrecognized selector sent to instance 0x8d6a6c0ます。これが私のコードです:

- (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 クラス内にあります。私は他の回答を見て、メソッドのシグネチャを同一にしましたが、それは役に立ちません。誰かが何が起こっているのか説明できれば、それは素晴らしいことです、ありがとう.

4

1 に答える 1

1

例外メッセージはほとんどすべてを説明しています。プログラムは、メッセージを認識しないオブジェクトにメッセージを送信します。コードをチェックインするためのいくつかの提案を次に示します。

  1. セルの .xib ファイルをチェックし、対応するオブジェクトに対して UIStepper クラスが正しく設定されているかどうかを確認します (アウトレットがある場合)。
  2. ステッパーのプロパティを変更しないでください。これは、プロパティのセッター メソッドをオーバーライドするか、単にキー値オブザーバーを追加することで確認できます。
  3. 個人的には、セルとviewControllerの間で単純な委譲を使用する方がより良いアプローチです。
于 2014-06-14T21:10:32.907 に答える