zoukankan      html  css  js  c++  java
  • UI基础之UINavigationController

    导航控制器默认自带一个根控制器

    AppDelegate.m文件中 初始化创建一个根控制器,且将此导航控制器设置为系统根控制器

    FirstViewController * first=[[FirstViewController alloc] init];

    UINavigationController  * nv=[[UINavigationController alloc] initWithRootViewController:first];

    self.window.rootViewController=nv;

     

    导航控制器的存储方式是堆栈的方式,先进后出

     

    1 把页面加入到堆栈中是用push方法,压入

        SecondViewController * second=[[SecondViewController alloc] init];

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

     

    2 把页面跳转到前面的页面用pop方法,推出

     

    >1 跳转到上一页

    //推出本页面控制器

    [self.navigationController popViewControllerAnimated:YES];

     

    >2 跳转到根视图中 

    [self.navigationController popToRootViewControllerAnimated:YES];

     

    >3 跳转到之前非前页的任意页面

    首先要找到存在堆栈中(数组中)的那页控制器

    //必须先找到堆栈中的第二页的控制器

        UIViewController *second=self.navigationController.viewControllers[1];//面向对象的多态的概念,用父控制器来写

        [self.navigationController popToViewController:second animated:YES];

     

    全局就一个导航栏

    AppDelegate.m文件中写

     

        nv.navigationBar.hidden=NO;

     

    //    nv.navigationBar.barTintColor=[UIColor redColor];

     

    //    nv.navigationBar.backgroundColor=[UIColor redColor];半透明的效果

     

        nv.navigationBar.barTintColor=[UIColor colorWithRed:79/255.0 green:208/255.0 blue:201/255.0 alpha:1];

    这样每个都加上了导航页

     

    若想在导航页上加东西,则是在每个小控制器里面加

        /********增加导航按钮*********/

      //添加系统自带的item

        UIBarButtonItem *left1=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(click)];

        

        //添加自定义的图片

        UIBarButtonItem * left2=[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"comment_icon_hot"] style:

                                 UIBarButtonItemStylePlain target:self action:@selector(click)];

        self.navigationItem.leftBarButtonItems=@[left1,left2];

        

     

        //添加文字选项

        UIBarButtonItem * right1=[[UIBarButtonItem alloc] initWithTitle:@"haha" style:UIBarButtonItemStylePlain target:self action:@selector(click)];

        //自定义item

        UIView * view=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];

        view.backgroundColor=[UIColor blackColor];

        UIBarButtonItem * right2=[[UIBarButtonItem alloc] initWithCustomView:view];

        

        self.navigationItem.rightBarButtonItems=@[right1,right2];

        

        //自定义中间item内容 中间item是个view

        UIView * titleView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 120, 35)];

        UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 30)

                        ];

        [label setText:@"我的"];

        label.center=titleView.center;

        label.textAlignment=NSTextAlignmentCenter;

        [titleView addSubview:label];

        titleView.backgroundColor=[UIColor whiteColor];

        self.navigationItem.titleView=titleView;

     

  • 相关阅读:
    C# Unity依赖注入
    Spring学习总结
    .Net 上传文件和下载文件
    JavaWeb学习篇--Filter过滤器
    Struts2入门教程
    Ceph 时钟偏移问题 clock skew detected 解决方案--- 部署内网NTP服务
    Erasure Coding(纠删码)深入分析 转
    s3cmd : Add a config parameter to enable path-style bucket access 当ceph rgw使用域名时,需要支持 path-style bucket特性
    ceph rgw java sdk 使用域名访问服务时需要设置s3client的配置项 PathStyleAccess 为true, 负责将报域名异常
    直播流怎么存储在Ceph对象存储上? Linux内存文件系统tmpfs(/dev/shm) 的应用
  • 原文地址:https://www.cnblogs.com/gzoof/p/5584014.html
Copyright © 2011-2022 走看看