• 创建一个多页面,基于UINavigationController的控制的跳转的iOS应用程序


    从android转到iOS上开发,刚开始很不习惯,总是喜欢用android的想法来用iOS上的控件,结果是到处碰壁,并且是一直碰,现在闲着没事就写点刚开始的一些简单程序,加深下对iOS开发的认识。

    1.首先创建一个空的iOS工程(我默认使用了arc机制,所以后面的代码中不会出现释放的代码);工程目录如下

    2.修改VSAppDelegate.h,添加一个UINavigationController类型的属性naviController,然后在VSAppDelegate.c中添加上属性的get/set方法的声明,在这个例子中我们只修改用

    (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 方法,其它的方法你可以手动删除掉,用的时候再添加就可以了,下面修改这个方法,将naviController添加到程序中,在这之前你需要先创建一个程序启动时的画面,在这个例子中是VSLoginViewController,原因是在初始化naviController的时候需要用一个ViewController来作为RootViewController,具体实现的代码如下:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    
        VSLoginViewController *loginView = [[VSLoginViewController alloc]initWithNibName:@"VSLoginViewController" bundle:nil];
        self.naviController = [[UINavigationController alloc]initWithRootViewController:loginView];
        self.window.rootViewController = self.naviController;
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];
        return YES;
    }
    

      启动后的画面如下:

    也许你会很奇怪,为什么你的程序会带有一个导航条呢,而我的这个怎么没有的呢,原因很简单,我是在VSLoginViewController的(void) viewWillAppear:(BOOL)animated方法中将导航条隐藏掉了,代码如下:

    -(void) viewWillAppear:(BOOL)animated
    {
        [self.navigationController setNavigationBarHidden:YES animated:YES];
        [super viewWillAppear:animated];
    }
    

    在做跳转逻辑之前,我们还要做一个设置,就是设置下一个页面中导航条的回退按钮的标题,是的,下一个页面的回退按钮的标题是在本页面设置的,这里有2种方法:1.设置本画面的title属性;2.修改下一个页面的导航条的回退按钮,这个的设置是在ViewController的init方法中实现的,代码如下:

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            UIBarButtonItem *backItem=[[UIBarButtonItem alloc]init];
            backItem.title=@"注销";
            self.navigationItem.backBarButtonItem = backItem;
    //        self.title = @"注销";
        }
        return self;
    }

    3.下面来实现页面的跳转逻辑,首先在VSLoginViewController.h中声明一个方法login,然后将这个方法绑定到xib的按钮上,然后实现login方法,代码如下:

    -(void) login:(id)sender
    {
        VSMainViewController *mainViewController = [[VSMainViewController alloc]initWithNibName:@"VSMainViewController" bundle:nil];
        [self.navigationController pushViewController:mainViewController animated:YES];
    }
    

    设置完成后点击这个按钮就会跳转到下一个页面了:

    导航条有显示回来了,这也是在viewWillAppear方法中设置的,如果不设置则默认是沿用上一个的导航条设置。

  • 相关阅读:
    Ubuntu环境下IPython的搭建和使用
    智能移动导游解决方案简介
    企业文化、团队文化与知识共享
    CoinPunk项目介绍
    Insight API开源项目介绍
    比特币Bitcoin源代码安装编译
    Javascript单元测试Unit Testing之QUnit
    Node.js的UnitTest单元测试
    Node.js调试
    Alfresco 4 项目介绍
  • 原文地址:https://www.cnblogs.com/janken/p/2538592.html
Copyright © 2020-2023  润新知