2011-03-30 5 views
0

У меня есть проект iPhone, который начинается со стандартного окна на основе UIView ... когда пользователь нажимает кнопку, чтобы предположить, что он запустится в новое представление с помощью UITabBarController - похожее к способу, которым приложение iTunes Connect ведет себя после входа в систему. В документации Apple нет примеров примеров кода, которые я делаю, но я знаю, что это возможно, потому что Apple сделала это в своих приложениях (еще одним примером является приложение MobileMe iDisk для iPhone).Как добавить UITabBarController к существующему проекту

Я уже пробовал стандартное -представлениеModalViewController: анимированный: метод, и это не сработало, потому что нет представления, которое я могу подключить в UITabBarController.

Далее я попытаюсь работать с двумя XIB-окнами внутри приложения-делегата, чтобы узнать, смогу ли я получить этот подход для работы.

Буду признателен, если вы знаете, как ответить на эту небольшую проблему. =)

+0

Извините за это Q, но знаете ли вы, как создать UITabBarController? –

ответ

1

То, что я в конечном итоге делает это:

В моем App делегат, я следующий в моем интерфейсе:

@interface myAppDelegate : NSObject <UIApplicationDelegate> { 
    UIWindow * window; 
    LauncherViewController * startup; 
    UITabBarController * tabs; 
} 
@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet LauncherViewController * startup; 
@property (nonatomic, retain) IBOutlet UITabBarController * tabs; 
@end 

В моем файле реализации Я добавлю следующие функции запуска приложения:

- (BOOL)application:(UIApplication *)application 
     didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Override point for customization after application launch. 

    [self.window addSubview:self.startup.view]; 
    [self.window makeKeyAndVisible]; 

    NSNotificationCenter * notifier = [NSNotificationCenter defaultCenter]; 

    [notifier addObserver:self 
       selector:@selector(launch) 
        name:MyAppLoginInitializedNotification 
        object:nil]; 

    [notifier addObserver:self 
       selector:@selector(logout) 
        name:MyAppLogoutNotification 
        object:nil]; 

    return YES; 
} 

- (void) launch { 
    [self.startup.view removeFromSuperview]; 
    [self.window addSubview:tabs.view]; 
    [self.window makeKeyWindow]; 
} 

- (void) logout { 
    [self.tabs.view removeFromSuperview]; 
    [self.window addSubview:startup.view]; 
    [self.window makeKeyWindow]; 
} 

Мой главный XIB содержит как стандартное UIVie wController, определяемый как LauncherViewController, а также общий UITabBarController. Как только мой главный диспетчер запускает аутентификацию учетных данных пользователя и отправляет MyAppLoginInitializedNotification, делегат приложения переключается с панели запуска на вид вкладки, что позволяет мне продолжить работу с моей логикой приложения.

0

UITabBarController действительно просто подкласс UIViewController, так -presentModalViewController:animated: должно работать:

UITabBarController *someController = [[UITabBarController alloc] init]; 
someController.viewControllers = /* your View Controllers here */ 
[self presentModalViewController:someController animated:NO]; 
+0

Я построил подкласс UIViewController и добавил UITabBarController внутри XIB. Он не будет компилироваться без предварительного определения представления, и я попробовал несколько разных вариантов. Я оговорился, когда сказал, что '-presentModalViewController: анимированный:' не работает, он действительно работает, но не так, как вы ожидали появления UITabBarController. – pmobley

0

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

http://www.mobisoftinfotech.com/blog/iphone/iphone-tabbar-uitabbarcontroller-tutorial/

+0

Спасибо за ссылку, и вы правильно понимаете, что мне нужно. Моя проблема связана с дополнительным представлением (перед тем, как появится панель управления панелью). – pmobley

+0

Ваша проблема еще не решена? –

0

Я не думаю, что вы должны повторно добавить UITabBarController в файле бобах. Просто создайте его в коде, добавьте его, как сказано выше, и вам должно быть хорошо идти. Вот код, который работает для меня.

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

    FirstController *firstView = [[FirstController alloc] initWithNibName:@"FirstView" bundle:nil]; 
    SecondController *secondView = [[SecondController alloc] initWithNibName:@"SecondView" bundle:nil]; 
    ThirdController *thirdView = [[ThirdController alloc] initWithNibName:@"ThirdView" bundle:nil]; 

    [nextController setViewControllers:[NSArray arrayWithObjects:firstView, secondView, thirdView, nil] animated:NO]; 

До этого момента она должна быть такой же, но я выдвигаю контроллер TabBar в uinavgiationcontroller вместо этого, так это то, где мы могли бы отличаться. Я делаю это следующим образом:

[self.navigationController pushViewController:nextController animated:YES]; 
Смежные вопросы