1

こんにちは、2 つのプロトタイプ セルを含むテーブルを作成しています。ボタン「Cell One」はメソッドbtnCellOneTouchedに接続され、ボタン「Cell Two」はbtnCellTwoTouchedに接続されています。各プロトタイプ セルのボタンにはタグ 0 があり、テキスト フィールドにはタグ 1 があります。

各プロトタイプ セルには、それぞれcellOnecellTwoという独自の識別子があります。これは私の.mファイルのコードです。変数はすべて正しく、エラーは発生しません。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    intNumRows = 0;
    numSections = 1;
}

- (NSInteger)numberOfSectionsInTableView: (UITableView *)tableView
{
    return numSections;
}

- (NSInteger)tableView: (UITableView *)tableView numberOfRowsInSection: (NSInteger)section
{
    return intNumRows;
}

- (void)displayRowNum:(id)sender
{
    UIButton *btn = (UIButton *)sender;
    NSLog(@"%d", btn.tag);
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:strCellType];
    if(cell == nil)
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strCellType];

    [(UIButton *)[cell viewWithTag:0] addTarget:self action:@selector(displayRowNum:) forControlEvents:UIControlEventTouchUpInside];

    return cell;
}

- (IBAction)btnCellOneTouched:(id)sender
{
    strCellType = @"cellOne";
    intLastRow = [tblMain numberOfRowsInSection:0];
    indexPath = [NSIndexPath indexPathForRow:intLastRow inSection:0];
    intNumRows++;
    [tblMain insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
}
- (IBAction)btnCellTwoTouched:(id)sender
{
    strCellType = @"cellTwo";
    intLastRow = [tblMain numberOfRowsInSection:0];
    indexPath = [NSIndexPath indexPathForRow:intLastRow inSection:0];
    intNumRows++;
    [tblMain insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationRight];
}

プログラムを実行すると、キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。

実行時に作成されたセルのボタンにメソッドを割り当てる方法の何が問題になっていますか?

ターゲットを追加する行をコメントアウトすると、正常に機能します。

これは私をしばらく困惑させました。助けてください。

ありがとう、アンジャーン。

4

0 に答える 0