Как преобразовать приложение iPhone на основе навигации в приложение на основе TabBar - PullRequest
1 голос
/ 23 октября 2011

У меня есть приложение для iPhone, которое является навигационным приложением.

Клиенту необходимо преобразовать 60% приложения в глобальную вкладку. (т.е. включить одну панель вкладок в 60% от просмотров приложения)

Итак, какова лучшая практика, которой следует следовать здесь? Включать ли TabBar с помощью IB в Window? Или добавить изменение кода навигации по всему приложению и нажать TabBarController вместо обычного ViewController?

Пожалуйста, дайте мне идеи.

Спасибо.

1 Ответ

0 голосов
/ 23 октября 2011

Я использовал новое оконное приложение и поместил следующий код:

Идея состоит в том, чтобы создать UITabBarController и поместить на него NavigationController вместо ViewControllers.

И каждыйnavigationController перейдет к своему набору ViewContrllers.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UITabBarController* tabBarContoller = [[UITabBarController alloc]init];

    Cross1VC* cross1VC = [[Cross1VC alloc]initWithNibName:@"Cross1VC" bundle:nil];
    cross1VC.title = @"Cross 1";
    UINavigationController* crossNav = [[UINavigationController alloc]initWithRootViewController:cross1VC];
    crossNav.title = @"Cross";
    [cross1VC release];

    Part1VC* part1VC = [[Part1VC alloc]initWithNibName:@"Part1VC" bundle:nil];
    part1VC.title = @"Part 1";
    UINavigationController* partNav = [[UINavigationController alloc]initWithRootViewController:part1VC];
    partNav.title = @"Part";
    [part1VC release];


    NSArray* viewControllers = [NSArray arrayWithObjects:crossNav, partNav, nil];
    [tabBarContoller setViewControllers:viewControllers animated:YES];

    //tabBarContoller.delegate = [[SomeDelegateHandlerClass alloc]init]; // assign, not retain

    [self.window addSubview:tabBarContoller.view];
    //[tabBarContoller release]; // make instance variable and release in dealloc
    [self.window makeKeyAndVisible];
    return YES;
}
...