管理UIView(如UIButton)与它们相关的模型对象之间的关联的最佳方法是什么?
示例(化妆):
让我们假设我有一个StoreViewController
代码:
- (void)viewDidLoad
{
for(int i = 0; i < [self.storeItems count]; ++i) {
StoreItem* item = [self.storeItems objectAtIndex:i];
UIButton* button = [[UIButton alloc] initWithFrame:[...]];
[button addTarget:self
action:@selector(itemButtonPressed:)
forControlEvents:UIControlEventTouchDown];
[button setTitle:item.text forState:UIControlStateNormal];
// THIS PART!
button.tag = i; // assuming approach 1 on the following paragraph
[self.someView addSubView:button];
}
[super viewDidLoad];
}
在我的活动代码中,我如何与我的项目联系?
- (void)itemButtonPressed:(UIButton*)button;
{
// THIS PART!
StoreItem* item = [self.storeItems objectAtIndex:button.tag; // assuming approach 1
[self addToCart:item];
}
我已经知道一些方法:
NSArray
),将按钮的tag属性设置为与列表中的对象索引相同的值。 (注意:到目前为止,这似乎是最好的选择,但如果您的数据不在列表中则不起作用)NSDictionary
关联按钮来存储项目。 (非常灵活但不太好维护,因为您需要为NSDictionary
为每个关联添加StoreViewController
userInfo
字典。 (这适用于ASIHTTPRequest
,在视图中使用它的缺点是什么?)您认为哪种方法最好?
如果这是自定义视图并且您可以随意添加字段,该怎么办?推荐使用userInfo
方法吗?
相关: