【问题标题】:iPhone SDK - Add a UINavigationController ProgrammaticallyiPhone SDK - 以编程方式添加 UINavigationController
【发布时间】:2011-11-15 00:13:31
【问题描述】:

我有一个 iPhone 项目,目前其中没有 UINavigationController。相反,我通过自己处理视图层次结构来交换视图。但是 - 正如您可能知道的那样 - 这是不好的做法,所以我试图弄清楚如何在我当前的应用程序中实现 UINavigationController。我显然可以重新开始我的项目并使用 Xcode 模板,但我真的不想这样做。

一定有办法以编程方式执行此操作。但我无法弄清楚 AppDelegate 中需要哪些代码。有人对这个有经验么?我现在很茫然。

干杯, 布雷特

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    是的。

    - (void)applicationDidFinishLaunching:(UIApplication *)application 
    {
       navController=[[UINavigationController alloc] init];
       MyViewController *firstController=[[MyViewController alloc] init];
       [navController pushViewController:firstController animated:NO];
       [window addSubview: navController.view];
    } 
    - (void) dealloc
    {
       ...  
       [navController release];
       ...
    }
    

    这是一个很常见的问题,也看看这个...... Programmatically add UINavigationController in UIViewController

    【讨论】:

    • 我认为你应该把动画:是的。因为大部分时间。我们希望控制器动画在移动到新视图之前。谢谢:)
    【解决方案2】:
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    
    // application.applicationIconBadgeNumber = 0;
    navController=[[UINavigationController alloc]initWithRootViewController:self.viewController];
    self.window.rootViewController = navController;
    [self.window makeKeyAndVisible];
    

    【讨论】:

      【解决方案3】:

      在Xcode 4的界面编辑器中,打开初始视图控制器,然后选择 '编辑器>嵌入>导航控制器'

      【讨论】:

        【解决方案4】:

        创建和释放导航控制器的示例:

        UINavigationController *navCon = [[UINavigationController alloc] init];
        [navCon pushViewController:yourViewController animated:NO];
        [navCon release];
        

        【讨论】:

          【解决方案5】:

          ![我将导航控制器添加到我的标签栏项目中,它运行良好

          self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
          
          
          UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
          
          UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
          
          UIViewController *viewController3 = [[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil] autorelease];
          
          self.tabBarController = [[[UITabBarController alloc] init] autorelease];
          
          
          self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3];
          
          
          self.navigationController= [[UINavigationController alloc]initWithRootViewController:self.tabBarController];
          

          // self.window.rootViewController = self.tabBarController;

          self.window.rootViewController = self.navigationController;
          
          
          [self.window makeKeyAndVisible];
          
          
          return YES;
          

          【讨论】:

            【解决方案6】:

            我用这个解决了同样的问题。

             - (void)applicationDidFinishLaunching:(UIApplication *)application 
             {
                  navController=[[UINavigationController alloc] init];
                  MyViewController *firstController=[[MyViewController alloc] init];
                  self.window.rootViewController = firstController;
                  [self.window addSubview navController.view];
            
             } 
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-05-23
              • 1970-01-01
              • 1970-01-01
              • 2013-03-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-11-25
              相关资源
              最近更新 更多