Использование контроллера панели вкладок не означает, что вы также не можете использовать один или несколько контроллеров навигации. Например, приложение iPod делает это, и именно так пользователи будут ожидать, что ваше приложение будет себя вести.
Вам нужно просто добавить пять UINavigationController
объектов в файл MainWindow.xib, по одному на каждой вкладке. Затем просто установите представление таблицы RSS в качестве корневого контроллера представления каждого из контроллеров навигации. (Я предполагаю, что вам нужно изменить поведение в зависимости от того, под какой вкладкой находится представление; просто используйте (MyAppDelegate *)[[UIApplication sharedApplication] delegate].tabBarController.selectedIndex
в вашем методе viewDidLoad
для настройки таблицы).
Затем, чтобы выдвинуть свой контроллер детального просмотра, вы просто сделаете следующий идиоматический код:
DetailController *detailController = [[DetailController alloc] initWithItem:[self.rssParser.rssItems objectAtIndex:indexPath.row]];
[self.navigationController pushViewController:detailController animated:YES];
[detailController release];
Конечно, вам нужно добавить initWithItem:
метод к вашему детальному контроллеру:
-(id)initWithItem:(RSSItem *)item {
if (self = [super initWithNibName:@"DetailController" bundle:nil]) {
self.item = item;
}
return self;
}
Как правило, вы хотите передать контроль над тем, какой элемент отображается на контроллеры представления, выполняющие отображение, вместо того, чтобы пытаться поддерживать центральный контроль в делегате приложения.