0

私の iPad アプリでは、画面に表示するいくつかの UIImage ビューをプログラムで作成しています。コードは基本的に次のようになります。

for(ModelObject *ModelsListのモデル){
    // モデル オブジェクトから UIImage ビューを作成します
    UIImageView *icon = [[UIImageView alloc] initWithFrame:model.icon_frame];
    icon.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:model.icon_path ofType:@"png"]];

     //イメージビューを変更可能な配列に追加して、それらを追跡します
    [myImageViews addObject:icon];

    // ビューをサブビューとして追加
    [self.view addSubview:icon];
}

これで、画面にたくさんのアイコンが表示されました。しかし、プログラムで作成した からタッチ イベントをインターセプトしたいUIImageViewsので、できれば送信者の ID を含む引数や、どれUIImageViewがタッチされたかを判断するために使用できるその他の識別情報を使用して、他のメソッドを呼び出します。

これを達成するためのベストプラクティスの方法は何ですか?

私はiOSが初めてなので、推奨される読書も大歓迎です。

4

1 に答える 1

0

これが一般的な慣行なのか、それともまともなやり方なのかさえわからないので、該当するフィードバックを提供してください...

したがって、基本的に私が行ったことは、ビュー オブジェクトとモデル オブジェクトの間でマップされる ID の辞書を保持することでした。次に、送信ビューの ID を検索し、適切なモデル オブジェクトを見つけます (次に、そのモデル オブジェクトを使用して読み込みます)。別の見方)

コードは次のようになります。

// ヘッダー内
@property(非アトミック、保持) NSMutableDictionary *icons_to_models

// icon という UIButton を作成した後
[アイコン setBackgroundImage:model.image forState:UIControlStateNormal];
[icon addTarget:self action:@selector(tappedIcon:) forControlEvents:UIControlEventTouchUpInside];
NSNumber *key = [NSNumber numberWithUnsignedInt:[アイコン ハッシュ]];
[icons_to_models setObject:model forKey:key];


...

//送信者を押されたアイコンに一致させ、
-(void)tappedIcon:(id)送信者{
    NSNumber *key = [NSNumber numberWithUnsignedInt:[送信者ハッシュ]];
    ModelObject *model = [icons_to_models objectForKey:key];
    NSLog(@"tapped on: %@", model.name);
}
于 2012-06-06T20:14:23.277 に答える