Как связать UIButton с моим объектом данных? (iPhone / Цель C) - PullRequest
0 голосов
/ 04 июля 2010

Я новичок в iPhone Dev. Мое приложение динамически создает кнопки, следующие из моей модели данных. Модель не просто список; это дерево. Мне нужен какой-то способ соотнести созданную кнопку с этой моделью данных, чтобы при нажатии кнопки я знал, какой части модели она соответствует.

В Windows большинство элементов управления пользовательского интерфейса имеют поле «тег», в которое можно поместить пользовательские данные. Используя аналогичный шаблон, я бы хотел сделать следующее на iPhone:

- (void)createMyButton:(MyModel*)foo
{
  UIButton* button = <insert creation code here>
  [button addTarget:self action:@selector(handleCreatedButtonTouch:) ...];
  button.tag = foo;
}

- (void)handleCreatedButtonTouch:(id)sender
{
  UIButton* button = (UIButton*)sender;
  MyModel* foo = (MyModel*)(button.tag);
  [foo userTouchedMyButton];
}

Я не могу найти упоминания о таком поле в документации Apple. Как вы, iPhone гуру, делаете это? Опять же, у меня нет простого способа индексирования в моей модели данных, и выполнение перечисления по всей модели данных для нахождения соответствия кажется очень неправильным.

1 Ответ

1 голос
/ 04 июля 2010

Андрей

Элементы пользовательского интерфейса в iPhone SDK имеют свойство tag, подобное тому, что вы описываете. Если вы хотите использовать button.tag, вы можете сделать это из коробки.

Единственное изменение в вашем псевдокоде будет в вашем handleCreatedButtonTouch: методе. строка:

MyModel* foo = (MyModel *)(button.tag);

попытается привести свойство tag к объекту MyModel. Возможно, вы захотите создать инициализатор в MyModel для обработки поиска, например:

MyModel *foo = [[MyModel alloc] initFromButtonWithTag:[sender tag]];

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...