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

// 在创建了一个 UIButton 之后叫做 icon
[图标 setBackgroundImage:model.image forState:UIControlStateNormal];
[icon addTarget:self action:@selector(tappedIcon:) forControlEvents:UIControlEventTouchUpInside];
NSNumber *key = [NSNumber numberWithUnsignedInt:[icon hash]];
[icons_to_models setObject:model forKey:key];


...

//将发件人与被按下的图标匹配
-(void)tappedIcon:(id)sender{
    NSNumber *key = [NSNumber numberWithUnsignedInt:[sender hash]];
    ModelObject *model = [icons_to_models objectForKey:key];
    NSLog(@"点击:%@", model.name);
}
于 2012-06-06T20:14:23.277 回答