Использование нескольких UINavigationControllers для реализации приложения входа - PullRequest
0 голосов
/ 31 мая 2011

Я работаю над навигационным приложением, которое включает в себя представление LOGIN. Мой подход к той же иерархии навигации (которая возвращалась на страницу входа в систему) был

  • Используйте два навигационных контроллера

  • как только пользователь войдет в систему, создайте новый контроллер навигации

    • назначить новый корень контроллера представления представлению входа в систему

      someViewController.navigationController = [[[UINavigationController alloc]initWithRootViewController:someViewController ] autorelease];
      
    • назначить этот контроллер навигации окну:

      MYAppDelegate *appDelegate = (MYAppDelegate *)[[UIApplication sharedApplication] delegate]; 
      

      appDelegate.navigationController = someViewController.navigationController;

      UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
      [window  addSubview:someViewController.navigationController.view];
      [window  makeKeyAndVisible];
      

- окончательно вставить «someViewController» в стек.

    [self.navigationController pushViewController:someViewController animated:YES];

ВСЕ РАБОТАЮТ ШТРАФНО ДО СЕЙЧАС ..

результаты:

  1. контроллер навигации someViewController является новым навигационным контроллером для всего приложения, и нет способа вернуться к представлению LOGIN.

  2. Я могу поместить новые контроллеры ViewCeler в стек и перейти к следующему уровню.

ПРОБЛЕМА: !!

«Я могу только вставить новые контроллеры ViewController в стек и перейти туда и обратно. На следующий уровень, а не дальше ...»

говорят:
(Newroot) мастер -> подчиняет - Х-> детали. // я не могу перейти на 3-й уровень. (NewRoot) подчиненный -> подробности

.

что еще я пробовал перед публикацией?

  1. попробовал просто установить корень того же навигационного контроллера в POST-LOGIN ViewControlller
    проблема: это не работало либо.

пожалуйста, руководство
Спасибо в ожидании .

1 Ответ

0 голосов
/ 31 мая 2011

Попробуйте следующим образом, возьмите навигационный контроллер в appDelegate скажем navController В loginViewController после успешного входа в систему

HomeViewController *svc=[[HomeViewController alloc]initWithNibName:@"HomeViewController" bundle:nil];

            appdelegate.homeViewController=svc;

            appdelegate.navController.navigationBarHidden=YES;
            appdelegate.navController=[[UINavigationController alloc] initWithRootViewController:appdelegate.homeViewController];
            [appdelegate.window addSubview:appdelegate.navController.view];

            [svc release];

тогда вы можете удалить экран входа в систему как [self.view removeFromSuperview];, если он добавлен как subView

...