Переключение с обычного вида на контроллер TabBar

Я создаю свое первое приложение для iPhone, и у меня проблема с переключением представлений. Во-первых, у меня есть два представления (логин, регистрация), которые переключаются через "presentModalViewController:animated:".

Но если кто-то вошел в систему, должен быть новый вид. Я хочу иметь UITabBar внизу (контроллер панели вкладок). Но это не работает. Я попытался создать новый AppDelegate, чтобы я мог использовать учебники, подобные этому, для которого требуется AppDelegate:

http://www.youtube.com/watch?v=LBnPfAtswgw&feature=player_embedded

Переключение на новый контроллер выполняется следующим образом:

startViewController = [[StartViewController alloc] initWithNibName:@"StartView" bundle:nil];
[UIView beginAnimations:@"View Curl" context:nil];
[UIView setAnimationDuration:2.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[self.view addSubview:startViewController.view];
[UIView commitAnimations];

Экран белый, потому что показанный вид - это UIView в моем StartView.xib. Там у меня есть новый AppDelegate, Владелец файла, View, TabBarController. Но загружается только UIView, а не TabBarController.

У вас есть идеи, как я мог решить эту проблему?

Спасибо и наилучшими пожеланиями.

1 ответ

Решение

Я мог бы предложить вам начать с TabBarController, и если имя пользователя / пароль не заданы, активный ViewController выполняет presentModalViewController:animated: для отображения представлений входа / регистрации viewsControllers в модальном режиме (скрывая основной TabBarController).

Вот пример кода для того, чтобы сделать это программно.

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
 self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
 [window setBackgroundColor:[UIColor whiteColor]];

 tabBarController = [[UITabBarController alloc] init];


 aViewController = [[aViewController alloc] init];
 UINavigationController *aNavController = [[[UINavigationController alloc] initWithRootViewController:aViewController] autorelease];
 aNavController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
 [aViewController release];

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

 // Add the tab bar controller's current view as a subview of the window
    [window addSubview:tabBarController.view];

 if(userNotLoggedIn){
     [self displayLoginViewController];
 }


    [window makeKeyAndVisible];
}

- (void)displayLoginViewController {
 LoginViewController *controller = [[LoginViewController alloc] init];
 // setup controller
 [self.tabBarController presentModalViewController:controller animated:NO];
 [controller release];
}
Другие вопросы по тегам