Прежде всего, если вы обнаружите, что набираете это:
(myAppAppDelegate *)[[UIApplication sharedApplication] delegate]
Возможно, вы выиграете от лучшего дизайна.Этот код, вероятно, исходит от контроллера представления, и в этом случае вы вызываете делегат приложения из контроллера представления и работаете с вещами, о которых вам не следует знать (панель вкладок).
Лучшедизайн заключается в делегировании делегату приложения, а делегат приложения переключает вкладку для вас.Делегат приложения должен иметь ссылки на фактические контроллеры представления в панели вкладок (вы можете подключить их через IB, если нет), чтобы вы могли вызывать setSelectedViewController:
с правильным объектом, а не индексировать в массив панели вкладок:
/* Somewhere in the app delegate */
- (void)selectFooBarController {
[self.tabBar setSelectedViewController:self.fooBarController];
}
Теперь, если вы не хотите беспокоиться о делегировании, вы можете просто поместить метод в делегат приложения (как тот, что приведен выше), и ваш первоначальный код станет:потребуется добавить свойства IBOutlet к делегату приложения, который вы подключаете к fooBarController и т. д. в Интерфейсном Разработчике.Это позволит вам напрямую ссылаться на них, а не извлекать их из массива.