• UINavigationController和UITabBarController合用


    开发环境:Xcode4.5

    很多时候我们创建一个基于UITabBarController的application以后还希望能够在每个tab view都可以实现导航控制,即添加一个UINavigationController来实现tabview内部的view之间的切换,这即是本文所要介绍的。

    一、创建一个 Tabbed Application.默认创建的是带有两个Tab的工程。

    二、在AppDelegate.h里面添加

    @property (strong, nonatomic) UINavigationController *NaviView1Controller;  
    @property (strong, nonatomic) UINavigationController *NaviView2Controller;  
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
    {  
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];  
        // Override point for customization after application launch.  
        UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];  
        viewController1.title = @"View1";  
        self.NaviView1Controller = [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease];  
      
        UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];  
        viewController2.title = @"View2";  
        self.NaviView2Controller = [[[UINavigationController alloc] initWithRootViewController:viewController2] autorelease];  
      
        self.tabBarController = [[[UITabBarController alloc] init] autorelease];  
          
        self.tabBarController.viewControllers = @[self.NaviView1Controller, self.NaviView2Controller];  
          
        self.window.rootViewController = self.tabBarController;  
        [self.window makeKeyAndVisible];  
        return YES;  
    }  
    

     运行一下程序,可以看到每个Tab view都自动多了一个NavigationBar在顶部。

    三、添加两个新的View测试NavigationController。

    1. 创建Test1ViewController类,以及对应的xib文件。

    2. 创建Test2ViewController类,以及对应的xib文件。

    3. 如果你的iPhone iOS版本低于6.0,在xib的设置里需要勾掉autolayout选项。

    四、在Tab view 1的xib文件里添加一个按钮,并设置相应的IBOutlet, IBAction.如下图:

    五、编写代码逻辑。

    在FirstViewController.m中。编写函数gotoTest1View

    1. - (IBAction)gotoTest1View:(id)sender {  
    2.     Test1ViewController *SRDVController = [[Test1ViewController alloc]init];  
    3.     [self.navigationController pushViewController:SRDVController animated:YES];  
    4.     [SRDVController release];  
    5. }  

    同理可以测试,Test2ViewController.不再赘述。

    六、代码下载:http://download.csdn.net/detail/lovefqing/4845092

  • 相关阅读:
    BZOJ 3261 最大异或和(可持久化Trie)
    模板 普通平衡树
    HDU4825 Xor Sum(贪心+Trie树)
    二维LIS(CDQ分治)
    IOIOI卡片占卜(Atcoder-IOIOI カード占い)(最短路)
    USACO 2009 Dec cow toll paths 过路费-floyd
    [USACO08JAN]电话线Telephone Lines(分层图)/洛谷P1948
    lightoj 1038 Race to 1 Again 期望
    lightoj 1030 Discovering Gold 期望
    lightoj 1027 A Dangerous Maze 期望
  • 原文地址:https://www.cnblogs.com/yangqinglong/p/5544282.html
Copyright © 2020-2023  润新知