iOSアプリケーションで。「MyCustomCell」と呼ばれるプロトタイプセルを含むUITableViewがあります。「MyCustomCell」には、ボタンと「cellKey」と呼ばれる NSString プロパティが含まれています。
@interface MyCustomCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UIButton *myButton;
@property (strong, nonatomic) NSString *cellKey;
@end
cellForRowAtIndexPath Delegate メソッドでは、cellKey を割り当て、ボタンにタップ リスナーを追加しています。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUInteger row = [indexPath row];
MyItem *item = [self.data objectAtIndex:row];
NSString *identifier = @"MyCustomCell";
MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:identifier];
//Give the cell the key
cell.cellKey = item.key;
//add a tap listener
[cell.myButton addTarget:self action:@selector(buttonTaped:) forControlEvents:UIControlEventTouchUpInside];
return cell;
}
buttonTaped ハンドラーで、クリックされたボタンに対応するセルのキーを取得したい:
- (IBAction)buttonTaped:(id)sender
{
//Get the button
UIButton *senderButton = (UIButton *)sender;
//get the super view which is the cell
MyCustomCell *cell = (MyCustomCell *)[senderButton superview];
//get the key
NSString *key = cell.cellKey;
}
ただし、アプリケーションを実行してボタンをクリックすると、次のエラーで cell.cellKey を呼び出すとアプリがクラッシュします。
-[UITableViewCellContentView cellKey]: unrecognized selector sent to instance 0x13576240
superView が MyCustomCell 型であることを認識していません。では、クリックされたボタンを含むセルの「cellKey」プロパティを取得するにはどうすればよいでしょうか?
ありがとう