视图和模型对象之间的关联

时间:2011-11-23 15:38:54

标签: objective-c ios uikit uibutton

管理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];
}

我已经知道一些方法:

  1. 假设模型位于列表中(如NSArray),将按钮的tag属性设置为与列表中的对象索引相同的值。 (注意:到目前为止,这似乎是最好的选择,但如果您的数据不在列表中则不起作用)
  2. 有一个NSDictionary关联按钮来存储项目。 (非常灵活但不太好维护,因为您需要为NSDictionary为每个关联添加StoreViewController
  3. 自定义视图可能包含userInfo字典。 (这适用于ASIHTTPRequest,在视图中使用它的缺点是什么?)
  4. ???
  5. 您认为哪种方法最好?

    如果这是自定义视图并且您可以随意添加字段,该怎么办?推荐使用userInfo方法吗?

    相关:

0 个答案:

没有答案