0

セルのaddSubviewメソッドによって追加され、テーブルビューでお気に入りとお気に入りのフラグを設定する画像のクリックイベントが必要です。このタスクを達成するために、セルの didSelectRowAtIndexPath メソッドは必要ないことに注意してください。以下のコードを参照してください:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }

    UIImage *myImage = [[UIImage alloc]init];
    myImage = [UIImage imageNamed: @"Favourite.png"];
    UIImageView *imgName = [[UIImageView alloc]initWithImage:myImage];
    imgName.frame = CGRectMake(270, 10, 25, 25);
    [cell addSubview:imgName];


    cell.textLabel.text = @"Hello";

    return cell;
}

imgName でクリックイベントを取得するにはどうすればよいですか?

4

1 に答える 1

0

UITableViewCell のサブクラスを作成することをお勧めします。UIImageView をプロパティとして指定します。次に、そのサブクラスで、UITapgestureRecognizer を UIIMageView に追加し、自分自身で何らかのセレクターを呼び出すようにします (例: -(void) imageViewTapped: (id) sender)。サブクラスにプロパティ「delegate」を与え、UITableViewCell の .h ファイルで定義されているプロトコルを採用させます。のようなメソッドを追加します

- (void) imageViewTappedOnTableViewCell: (YourSubclassOfUITableViewCell *) cell;

このメソッドは、タップ認識エンジンに追加したセレクタ (imageViewTapped: など) のデリゲートで呼び出すことができます。viewControllers cellForRowAtIndexPath に戻ります。セルのデリゲートをその viewController に設定できます。次に、viewController でプロトコルからメソッドを実装します。引数としてタップされたセルを送信すると、tableView にそのセルの indexPath を要求し、それに応じて動作することができます。

非常に明確な設計であり、まさにあなたが探しているものです ( didSelectCellForRowAtIndexPath: はほぼ同じ概念を実行していることに注意してください (ただし、セルの代わりに indexPath が提供されることを除きます)。

于 2013-11-02T16:40:47.983 に答える