0

我正在开发一个涉及登录视图的基于导航的应用程序。我处理相同导航层次结构(返回登录页面)的方法是

  • 使用两个导航控制器

  • 用户登录后立即创建一个新的导航控制器

    • 将新视图控制器的根分配给登录后视图

      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. 我能够将新的 ViewControllers 推送到堆栈并来回导航到下一个级别。

问题 :!!

“我只能将新的 ViewControllers 推送到堆栈并来回导航。到下一个级别,而不是进一步......”

说:
(newroot)master-->subordinates--X->details。// 我无法导航到第三级。(newRoot) 下级--> 详细信息。

在发布之前我还尝试了什么?

  1. 尝试简单地将同一导航控制器的根设置为 POST-LOGIN ViewController
    问题:它也不起作用。

请指导
谢谢期待

4

1 回答 1

0

试试下面的方法,在appDelegate中取一个navigationController说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];就像添加为子视图一样

于 2011-05-31T05:40:33.963 回答