Каков наилучший подход для управления связью между 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
), установите для атрибута тега кнопки то же значение, что и для индекса объекта в списке.(примечание: пока что это лучший вариант, но он не будет работать, если ваши данные отсутствуют в списке) - Имеют
NSDictionary
, который связывает кнопки для хранения элементов.(очень гибкий, но не очень приятный в обслуживании, поскольку вам нужно добавить NSDictionary
к вашему StoreViewController
для каждой ассоциации) - Пользовательские представления могут иметь словарь
userInfo
.(это хорошо работает для ASIHTTPRequest
, каковы недостатки использования этого в представлении?) - ???
Какой подход вы считаете лучшим?
Что если это пользовательский вид и вы можете добавлять поля по своему желанию?Рекомендуется ли подход userInfo
?
, связанный: