Это как добавить NavigationController программно (например, в вашем AppDelegate)
UIViewController *viewController1, *viewController2;
viewController1 = [[[UIViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease];
UINavigationController *navigationcontroller = [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease];
viewController2 = [[[UIViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease];
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationcontroller, viewController2, nil];
Если у вас есть табличное представление в Viewcontroller1, вы можете получить доступ к Navigationcontroller, используя self.navigationController
, например. в didSelectRowAtIndexPath
чтобы открыть DetailView
например.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
В этом примере detailViewController включает файл NIB, который добавляет панель навигации с кнопкой возврата.
Но если вы инициализируете detailViewController
программно, вы можете добавить действие (GoBack) в UIBarButtonItem
, чтобы удалить detailViewController
из его контроллера навигации.
-(void) GoBack
{
[self.navigationController popViewControllerAnimated:YES];
}