Как отправить сообщение в viewcontroller в другой вкладке - PullRequest
2 голосов
/ 01 октября 2011

Я использую UiTabBarController для своего приложения для iPad.Одной из вкладок является UITableView с избранным.Когда я щелкаю ячейку, я хочу, чтобы избранное открывалось в viewController на другой вкладке.

Я решил это безобразно, назначив переменную в синглтоне, а затем выбрал другую вкладку с помощью [self.tabBarController setSelectedIndex:2];

В ViewWillAppear на целевом viewController я считываю значение из синглтона и затем выполняю все действия.

Должен быть правильный способ сделать это.Как мне ссылаться на экземпляр ViewController в другой вкладке?Есть ли способ загрузить другой viewController во вкладку?

Кто-нибудь?

Ответы [ 2 ]

0 голосов
/ 01 октября 2011

Создайте протокол делегата для вашего контроллера табличного представления:

@protocol MyTableViewControllerDelegate <NSObject>

- (void) myTableViewController: (MyTableViewController *) myTableViewController didSelectSomeObject: (MyClass *) object

@end

и создайте свойство для делегата:

@property (nonatomic, assign) IBOutlet id<MyTableViewControllerDelegate> delegate;

Затем сделайте второй контроллер представления делегатом вашего контроллера табличного представления - либо подключив их в построителе интерфейса, либо в делегате приложения, если он знает о них обоих.

Затем, когда выбирается строка в таблице, вызывается метод делегата, который сообщает об этом другому контроллеру представления.

0 голосов
/ 01 октября 2011

Вы можете получить все контроллеры представления в представлении Tab с помощью свойства viewControllers.

Из документов:

Значением по умолчанию для этого свойства является ноль. При настройке контроллера панели вкладок вы можете использовать это свойство, чтобы указать содержимое для каждой вкладки интерфейса панели вкладок. Порядок контроллеров представления в массиве соответствует порядку отображения на панели вкладок. Таким образом, контроллер с индексом 0 соответствует самой левой вкладке, контроллер с индексом 1 - следующей вкладкой справа и так далее. Если имеется больше контроллеров представления, чем может поместиться на панели вкладок, контроллеры представления в конце массива управляются контроллером навигации More, который сам не включен в этот массив.

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