0

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」プロパティを取得するにはどうすればよいでしょうか?

ありがとう

4

1 に答える 1

1

ボタンは実際にセルに追加されるため、セルに到達するには階層をcontentViewもう 1 レベル上に移動する必要があります。superview

于 2013-07-05T22:57:16.777 に答える