Приложение UINavigationController для приложения UITabBarController - PullRequest
0 голосов
/ 07 апреля 2011

Я работал над приложением на основе UINavigationController, используя UITableView для корневого просмотра и Core Data для источника данных.

К сожалению, я не очень хорошо планировал заранее и теперь хотел бы реализовать навигацию по панели вкладок к приложению поверх того, что у меня уже есть.

Кто-нибудь может порекомендовать простой способ сделать это? Или мне лучше начать снова с шаблона на основе TabBar и попробовать подключить мой существующий код?

Спасибо, ребята!

Адам

Ответы [ 3 ]

2 голосов
/ 07 апреля 2011

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

Возможно, вам просто нужноизменить метод application:didFinishLaunchingWithOptions: вашего делегата приложения, чтобы он выглядел примерно так:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    NSMutableArray *viewControllers = [[[NSMutableArray alloc] init] autorelease];

    // First tab
    MyController *myController = [[[MyController alloc] init] autorelease];
    mapViewController.navigationItem.title = @"First";
    UINavigationController *myRootController = [[[UINavigationController alloc]
                                              initWithRootViewController:myController]
                                             autorelease];
    myRootController.tabBarItem.title = @"First";
    myRootController.tabBarItem.image = [UIImage imageNamed:@"MyControllerTab"];
    [viewControllers addObject:myRootController];

    // Second tab
    MyOtherController *myOtherController = [[[MyOtherController alloc] init] autorelease];
    myOtherController.navigationItem.title = @"Second";
    UINavigationController *otherRootController = [[[UINavigationController alloc] initWithRootViewController:myOtherController] autorelease];
    otherRootController.tabBarItem.title = @"Second";
    otherRootController.tabBarItem.image = [UIImage imageNamed:@"OtherControllerTab"];
    [viewControllers addObject:otherRootController];

    // Create other tabs
    // ...

    // Tab bar
    UITabBarController *tabBarController = [[[UITabBarController alloc] init] autorelease];
    [tabBarController setViewControllers:viewControllers];

    [self.window setRootViewController:tabBarController];
    [self.window makeKeyAndVisible];
    return YES;
}
0 голосов
/ 07 апреля 2011

Адам,

Не уверен, сколько кодирования вы уже сделали, но если вы не очень хорошо знакомы с подключением вещей в IB и настройкой делегатов, вам лучше начать с шаблона TabBarController.

Вот что вы делаете:

  1. Определите новый IBOutlet для UITabBarController в AppDelegate и добавьте TabBarController к IB
  2. Подключите UITabBarController к IBOutlet в AppDelegate в IB
  3. Измените rootViewController на tabBarController в AppDelegate
  4. Перетащите все ViewController в контроллер панели вкладок в IB
  5. Настройте другие вкладки с помощью NavigationControllers или контроллеровв зависимости от вашего дизайна
  6. Выполнить, исправить, повторить
0 голосов
/ 07 апреля 2011

Если вы хотите подключить существующий контроллер навигации к одной из вкладок на панели вкладок, это довольно просто - просто определите новый UITabBarController, который будет служить корневым контроллером, и загрузите ваш контроллер навигации в одну вкладку.Затем измените делегат приложения для загрузки контроллера панели вкладок вместо контроллера навигации.

Если, однако, вы хотите извлечь несколько контроллеров из существующего стека навигации, возможно, вам придется проделать немного больше работы -найдите места, где вы вызываете pushViewController:animated:, чтобы изменить свой стек навигации, и вместо этого вставьте эти экземпляры контроллера представления в закладки на панели вкладок.Здесь, возможно, стоит начать с нового шаблона панели вкладок и скопировать существующие контроллеры, в зависимости от сложности вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...