Создайте UINavigationController в UITableViewController внутри UITabBarController - PullRequest
1 голос
/ 18 июля 2011

У меня есть приложение на основе UITabBarController , и внутри одной из вкладок у меня есть UITableViewController для отображения «продуктов», пока здесь все работает отлично.

Теперь я хочу, чтобы при нажатии одной из ячеек внутри UITableViewController был открыт UINavigationController для отображения UIViewController с подробной информацией об этом продукте.

Я думаю, что иерархия приложений должна быть такой:

UITabBarController (BASE) Level-1
  |
  |___ UITableViewController (PRODUCTS) Level-2
         |
         |___ UINavigationController Level-3
                |
                |___ UIViewController (PRODUCT DETAILS) Level-4

Как достичь уровня 3 и уровня 4?

Заранее спасибо:)

Ответы [ 2 ]

5 голосов
/ 21 июля 2011

Сначала вам нужно будет сбросить иерархию примерно так:

UITabBarController (BASE)
  |
  |___ UINavigationController
      |
      |___ UITableViewController (PRODUCTS)
        |
        |___ UIViewController (PRODUCT DETAILS)

Вам нужно добавить UINavigationController в TabBarController, затем вы будете использовать его, чтобы выдвинуть детали продукта.

чтобы добавить UINavigation на TabBarController:

UITabBarController *tabBarController = [[UITabBarController alloc] init];

UINavigationController *tableNavController_1 = [[[UINavigationController alloc] initWithRootViewController:YourProductViewController_1] autorelease];
UINavigationController *table2NavController_2 = [[[UINavigationController alloc] initWithRootViewController:YourProductViewController_2] autorelease];

tabBarController.viewControllers = [NSArray arrayWithObjects:tableNavController_1, table2NavController_2, nil];

//then add the controller to view like,
// this:
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];

//or this:
[self.view addSubview:tabBarController.view];

Я рекомендую вам создать новый UITableViewController для каждого ProductViewController , а затем использовать метод делегата: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath для отображения подробного представления.:

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"Nib name" bundle:nil];
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES]
[detailViewController release];
0 голосов
/ 18 июля 2011

Просто посмотрите этот урок.http://www.youtube.com/watch?v=LBnPfAtswgw

...