Вызов метода экземпляра из другого класса - PullRequest
3 голосов
/ 29 ноября 2010

Рассмотрим эту настройку вида:

alt text

У меня есть контроллер вида, который переключается между набором подвидов.Каждый вложенный вид является подклассом UIView с пользовательским кодом.Для переключения представлений я использую оператор switch, который выделяет новое представление в качестве текущего представления.Это работает очень хорошо.

Сейчас я нахожусь в положении, когда у меня есть представление (MainMenu) с вложенным представлением (PopUp), которое содержит UITableView.Представление PopUp отображается и скрывается с помощью методов экземпляра класса MainMenu.h.Позволяет вызывать методы showPopUp и hidePopUp.

Когда пользователь выбирает элемент из UITableView, он затем должен вручную закрыть содержащее представление (PopUp), нажав кнопку закрытия, которая связана с методом hidePopUp.

Что должно произойти, когда пользователь выбирает элемент в UITableView, - это то, что метод hidePopUp должен запускаться автоматически.

Как мне вызвать метод экземпляра hidePopUp через didSelectRowAtIndexPath UITAbleView?Это работа для делегата приложения или, возможно, NSNotificationCenter?Я пробовал такие вещи, как вызов

[[[UIApplication sharedApplication] delegate] closePopUp]; 

из didSelectRowAtIndexPath безрезультатно ...

Заранее спасибо, возможно, что-то простое, что мне не хватает.Программирование с гриппом сложно!

1 Ответ

1 голос
/ 29 ноября 2010

Есть несколько способов сделать это, например, уведомления или работа с помощью синглтона, такого как делегат приложения (хотя использование шаблона singleton [anti] не обходится без противоречий).Лично я бы использовал делегирование.

Что-то вроде:

@protocol PopUpDelegate
@optional
- (void)Popup:(YourPopUpClass *)popUp didEndWithData:(NSData *)blah;
@end

Затем вы можете реализовать этот протокол в вашем MainMenu, назначить его в качестве делегата Popup, заставить Popup вызывать метод делегата при нажатии кнопки закрытия и закрытьоттуда всплывающее окно.

Вот отличный пост о том, как реализовать делегатов, если вы решите пойти по этому пути: Как создать делегатов в Objective-C?

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