2

nibファイルを使用してUItableViewCellを作成し、セルにボタンを配置しました。ユーザーがボタンをクリックしたときにアクションを関連付けるために IBAction を作成しましたが、クラッシュが発生し、何が問題なのかわかりません。必要なものをすべて設定しました。

//in my .h
-(IBAction)go; 

//in my .m
-(IBAction)go 
{ 
    NSLog(@"hello");
} 

しかし、クラッシュが発生し、コンソール デバッグに何も表示されません。

UITableviewcell でボタンを設定し、このボタンにアクションを関連付ける方法を教えてください。ご回答有難うございます

4

7 に答える 7

10

私の意見では、タグを設定するのは悪い方法です。これにより、アプリケーションの他の場所でのタグの使用が制限されます。

NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell *)[[sender superview] superview]];

このアプローチを使用すると、セルのIndexPathを実際に取得できます。

于 2012-02-06T12:52:29.107 に答える
1

プログラムでボタンを作成し、セルのサブ ビューに追加します。tag を indexPath.row 値として設定し、ターゲットをボタンに追加します。ターゲットでは、次のように簡単に使用できます。

 -(void)buttonInsideCellIsPressed : (id)sender{
   UIButton *button = (UIButton *)sender; 
   NSIndexPath *indexPath = [NSIndexPath indexPathForRow:button.tag inSection:0];
   CustomCell *cell = (CustomCell*)[myTable cellForRowAtIndexPath:indexPath];

   // Here you may change the background image for the button for rollover or anything 
    }
于 2011-05-12T17:22:44.007 に答える
1

これは私のために働いたものです...

- (void)yourButton:(id)sender{

    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition];
    CustomCellClass *cell = (CustomCellClass *)[self.tableView cellForRowAtIndexPath:indexPath];

    NSString *myFooText = cell.cellLabelFoo.text;
}
于 2013-02-27T03:48:42.973 に答える
0

プログラムでボタンを作成し、セル サブビューに追加します。

于 2011-05-03T12:31:10.010 に答える
0

クラッシュは次の理由による可能性があります

  1. ビューコントローラーをセルに追加して解放しました。したがって、ボタンをタップすると、タップを処理するコントローラーを見つけることができません
  2. タップ イベントのボタン コールバックを追加するときに、有効なセレクタが指定されていません
  3. NULL のデータにアクセスしている可能性があります

セルの作成方法のコードを投稿すると、セルに関する詳細情報を取得できます。

于 2011-05-03T13:14:19.283 に答える
0

メソッドを作成して (id )sender を渡す必要があります。以下でこれを試してください..これが機能することを願っています..これは、ボタンを作成してメソッドを呼び出す場所に書きます..

[myButton addTarget:self action: @selector(buttonPressed:) 
                 forControlEvents:UIControlEventTouchUpInside];



-(void)buttonPressed:(id)sender{

nslog(@"hi");
}

これがうまくいくことを願っています

于 2011-05-03T13:19:30.913 に答える
0

次のコードを使用すると、ペン先をまったく使用せずに、プログラムで IBAction をボタンに関連付けることができます。

[myButton addTarget:self action: @selector(buttonPressed) 
                 forControlEvents:UIControlEventTouchUpInside];
于 2011-05-03T12:40:41.070 に答える