Возвращение значения в родительское представление - PullRequest
0 голосов
/ 02 мая 2011

У меня следующая ситуация: у меня есть UISwipeGestureRecognizer, подключенный к моей ячейке таблицы. При пролистывании две кнопки переключают свой статус .hidden на NO.

Эти клетки изготовлены на заказ. Это означает, что IBAction этих кнопок находится в этом контроллере. Теперь я хотел бы, чтобы UIButton в этих пользовательских ячейках отправлял переменную в родительское представление. Этот родительский вид - UIViewController (содержащий UITableView).

Как я могу это сделать? Я читал о протоколах, но я не могу получить надежный пример для этого ... Или есть какие-то другие идеи? Все они приветствуются:)

1 Ответ

1 голос
/ 02 мая 2011

Подход, которым вы придерживаетесь, может привести к сбою или утечке памяти, поскольку вам нужно сохранить контроллер содержимого ячейки uitableview.

Однако протоколы - это простой подход, когда после создания ячейки табличного представления выМожно выделить viewcontroller (который создает табличное представление) в качестве делегата для всех действий для представления содержимого ячейки.

В контроллере вашей пользовательской ячейки просто вызовите метод делегата, и он будет обработан вашим родительским представлением.Это может показаться странным, но это действительно просто.Попробуем опубликовать пример кода.

@protocol yourDelegate;

@interface yourViewController{
id<yourDelegate> delegate;
}
@property (nonatomic,assign) id<yourDelegate> delegate;
@end
@protocol yourDelegate
- (void)passThisActionToMainController;
- (void)passThisEventToMainController;
@end

Как только вы закончите с вышеуказанным в вашем контроллере представления ячеек таблицы, в главном контроллере создайте экземпляр вашего контроллера представления и затем

controller.delegate = self;

В контроллере представления вашей ячейки, когда пользователь касается или выполняет какое-либо действие, затем вызовите

[delegate passThisActionToMainController];

или

[delegate passThisEventToMainController];

Таким образом, ваш главный контроллер получает событие, и оно может быть обработано.

Альтернативный способ сделать это - создать кнопки при создании ячейки и обработке событий.Я бы рекомендовал этот подход.

[myButton addTarget:self action:@selector(whatMyButtonShouldDo:)   
  forControlEvents:UIControlEventTouchUpInside];

Приведенная выше строка скопирована из ответа здесь .

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