zoukankan      html  css  js  c++  java
  • 导航控制器和自定义导航控制器

    导航控制器
    appDelegate
    ViewController * vc = [[ViewController alloc] init];
        UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:vc];
        self.window.rootViewController = nav;

    具体在ViewController中设置
        //设置标题
        self.title = @"首页你好再见哈哈杯子";
        
        //添加导航条左按钮,设置系统风格按钮
        UIBarButtonItem * leftBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:nil action:nil];
        self.navigationItem.leftBarButtonItem = leftBarButton;
        
        //设置文字按钮
        UIBarButtonItem * rightBarButton1 = [[UIBarButtonItem alloc] initWithTitle:@"更多" style:UIBarButtonItemStylePlain target:self action:@selector(rightAction1:)];
        
        //设置图片按钮
        UIBarButtonItem * rightBarButton2 = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"setting_item"] style:UIBarButtonItemStylePlain target:nil action:nil];
        self.navigationItem.rightBarButtonItems = @[rightBarButton1,rightBarButton2];
        
        //修改按钮颜色
        self.navigationController.navigationBar.tintColor = [UIColor greenColor];
        
        //设置navigationBar的颜色,不透明了。
    //    self.navigationController.navigationBar.barTintColor = [UIColor orangeColor];
        
        //设置navigationBar的样式,设置barTintColor功能失效
    //    self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
        
        //设置navigationBar是否透明
    //    self.navigationController.navigationBar.translucent = NO;
     
        NSDictionary * dict = @{NSFontAttributeName:[UIFont systemFontOfSize:20],
                                NSForegroundColorAttributeName:[UIColor whiteColor]};
        //单独设置按钮颜色
        [self.navigationItem.leftBarButtonItem setTitleTextAttributes:dict forState:UIControlStateNormal];
        
        
        NSDictionary * titleDict = @{NSFontAttributeName:[UIFont systemFontOfSize:30],
                                NSForegroundColorAttributeName:[UIColor yellowColor]};
        //设置导航条题目
        [self.navigationController.navigationBar setTitleTextAttributes:titleDict];
        
        //设置提示
    //    self.navigationItem.prompt = @"我是提示";
        
        //隐藏navigation
    //    self.navigationController.navigationBarHidden = YES;
        
        //修改返回按钮
        
        UIBarButtonItem * item = [[UIBarButtonItem alloc] init];
        item.title = @"返回";
        self.navigationItem.backBarButtonItem = item;


        
        UIButton * btn = [UIButton buttonWithType:UIButtonTypeSystem];
        [btn setTitle:@"下一页" forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(nextAction:) forControlEvents:UIControlEventTouchUpInside];
        btn.frame = CGRectMake(100, 100, 100, 100);
        [self.view addSubview:btn];
    }

    - (void)nextAction:(UIButton *)btn {
        
        NextViewController * nextVC = [[NextViewController alloc] init];
        [self.navigationController pushViewController:nextVC animated:YES];//下一页方法
    }

    自定义导航条
        //导航控制器下背景一定要设置,否则有卡顿现象


    //自定义导航titleView
        UISegmentedControl * segment = [[UISegmentedControl alloc] initWithItems:@[@"消息",@"电话"]];
        segment.frame = CGRectMake(0, 0, 60, 30);
        self.navigationItem.titleView = segment;

     //设置返回按钮,但是效果不佳-颜色不太好看
    //    UIBarButtonItem * backItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backBtn"] style:UIBarButtonItemStylePlain target:nil action:nil];
    //    self.navigationItem.backBarButtonItem = backItem;


    //跳转下一页
    - (void)upAction {
        //导航控制器的方法
        SecondViewController * secondVC = [[SecondViewController alloc] init];
        [self.navigationController pushViewController:secondVC animated:YES];
        
        
    //    ViewController * vc = [[ViewController alloc] init];
    //    UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:vc];
    //    [self presentViewController:nav animated:YES completion:nil];

    }


    //    UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom]
    //                      ;
    //    [btn setImage:[UIImage imageNamed:@"backBtn"] forState:UIControlStateNormal];
    //    btn.frame = CGRectMake(0, 0, 30, 30);
    //    [btn addTarget:self action:@selector(returnAction:) forControlEvents:UIControlEventTouchUpInside];
    //    
    //    //自定义返回按钮,返回手势消失
    //    UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:btn];
    //    
    //    self.navigationItem.leftBarButtonItem = item;


    BaseNavViewController.h

    //appearance调用一次,作用于整个app
        
        UINavigationBar * bar = [UINavigationBar appearance];
        UIBarButtonItem * barItem = [UIBarButtonItem appearance];
        
        //设置UINavigationBar的颜色
        bar.barTintColor = [UIColor yellowColor];
        
        NSDictionary * titleDict = @{NSFontAttributeName:[UIFont systemFontOfSize:20],NSForegroundColorAttributeName:[UIColor greenColor]
         
                                     };
        //设置UINavigationBar的题目

        [bar setTitleTextAttributes:titleDict];
        
        //设置UINavigationBar的背景图片
        [bar setBackgroundImage:[UIImage imageNamed:@"nav"] forBarMetrics:UIBarMetricsDefault];
        
        NSDictionary * titleItemDict = @{NSFontAttributeName:[UIFont systemFontOfSize:15],NSForegroundColorAttributeName:[UIColor magentaColor]
                                     };
        [barItem setTitleTextAttributes:titleItemDict forState:UIControlStateNormal];

        //因为自定义了左item,手势消失,所以加上这句话,还原手势。
    //    self.interactivePopGestureRecognizer.delegate = self;
        
    }


    - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
        
        //self.viewControllers拿到所有管理的控制器,self.viewControllers.count压栈的数量
        
        if (self.viewControllers.count) {
            
            UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom]
            ;
            [btn setImage:[UIImage imageNamed:@"backBtn"] forState:UIControlStateNormal];
            btn.frame = CGRectMake(0, 0, 30, 30);
            [btn addTarget:self action:@selector(returnAction:) forControlEvents:UIControlEventTouchUpInside];
            
            //自定义返回按钮,返回手势消失
            UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:btn];
            
            viewController.navigationItem.leftBarButtonItem = item;
            
        }
        
        [super pushViewController:viewController animated:animated];
    }


  • 相关阅读:
    linux配置Java环境变量(详细)
    linux下的挂载点和分区是什么关系
    VNC的安装与配置
    Linux下的字符集问题
    Freemarker学习中遇到的问题
    ABAP- INCLUDE Zxxx IF FOUND.
    ABAP读取工单状态 STATUS_READ
    WIN7系统设置wifi
    201702-增强记
    20170301 Excel 分多个sheet 导出
  • 原文地址:https://www.cnblogs.com/hlgbys/p/5309846.html
Copyright © 2011-2022 走看看