У меня есть метод, называемый handleLocalNotification в моем AppDelegate, который запускается, когда мое приложение получает уведомление. Мне нужно, чтобы он переключился на вкладку 0 в моем UITabBarController, который содержит UITableview. Затем мне нужно, чтобы он нажал на правильную строку таблицы, чтобы показать запись, отправленную уведомлением. Все контроллеры создаются в раскадровке, поэтому у меня нет ссылок на них в AppDelegate.Изменить вкладку и нажать вид из AppDelegate
Я добавил к моему AppDelegate.h:
@class MyListViewController;
@interface iS2MAppDelegate : UIResponder <UIApplicationDelegate> {
MyListViewController *_listControl;
}
и для тестирования я просто положить это в методе didFinishLaunchingWithOptions:
UITabBarController *tabb = (UITabBarController *)self.window.rootViewController;
tabb.selectedIndex = 0;
_listControl = [tabb.viewControllers objectAtIndex:0];
[_listControl.tableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:4 inSection:0] animated:YES scrollPosition:UITableViewScrollPositionTop];
Бит tabBarController работает, как я могу получить он загружается на разные вкладки. Последние 2 строки приводят к сбою. Понял ли я об этом правильно? Или мне нужно использовать другой метод? Причина аварии является:
UINavigationController Tableview]: непризнанные селектор направлен например
Спасибо. Это хороший способ обойти это, однако наблюдатель уведомления не вызывается, когда приложение полностью закрыто. Я предполагаю, что tableViewController не был загружен к моменту отправки postNotification. Если приложение просто подсвечено, оно работает. Кроме того, я ошибся, думая, что selectRowAtIndexPath фактически нажмет на меня строку, но это просто подчеркивает ее. Есть ли способ заставить его нажать конкретную строку, поэтому вызывается метод prepareForSegue? – Darren
проверить мое редактирование пожалуйста. –
Отлично, что должно стрелять в камеру. Как насчет того, когда приложение загружается первым, а наблюдатель не был настроен при его вызове? Могу ли я заставить его подождать и убедиться, что ViewDidLoad был вызван, прежде чем запускать уведомление? – Darren