//  AppDelegate.m
#import "AppDelegate.h"
#import "ViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    CGRect rect = [UIScreen mainScreen].bounds; //屏幕的大小
    UIWindow *w = [[UIWindow alloc]initWithFrame:rect];//新建一个页面  并且让新建的页面充满整个显示屏
    w.backgroundColor = [UIColor redColor]; //把新建的页面的颜色设为红色
    [w makeKeyAndVisible];//把设置的效果显示在页面上
    self.window = w;//使得开始设置的不要马上系统给销毁
    ViewController *v = [[ViewController alloc]init];//新建另一个页面
    UINavigationController *nav =[[UINavigationController alloc]initWithRootViewController:v];//初始画导航页面 并建立
    
    UIImage *image = [UIImage imageNamed:@"a"];//将要使用的图片赋值 并创建
    [nav.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];//将图片添加到导航页面中
    
    
    nav.view.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:1];//给导航页面设置背景颜色 并用的是三元色来表示
    v.view.backgroundColor = [UIColor orangeColor];//将页面的背景颜色设置为橘红色
    self.window.rootViewController = nav;//把创建好的导航页面在第一个页面上显示
   
    return YES;
}

//  ViewController.m

#import "ViewController.h"
#import "SecondViewController.h"

@interface ViewController ()

@end

@implementation ViewController

//视图加载完成后自动调用
- (void)viewDidLoad {
    [super viewDidLoad];
    
//    self.title = @"AAA";   //第一种方法 在导航页面显示标签
    self.navigationItem.title = @"AAA";//第二种方法 在导航页面显示标签
    
    //1.
    UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithTitle:@"Left" style:UIBarButtonItemStylePlain target:self action:@selector(didLeftClicked)];//
    
    //2.
    UIImage *img = [UIImage imageNamed:@"back"];//添加图片 并初始化
//    UIBarButtonItem *leftItem2 = [[UIBarButtonItem alloc] initWithImage:img style:UIBarButtonItemStyleDone target:self action:@selector(didLeftClicked)];//
    
    //3. 使用一个自定义的控件作为左边item
//    UIImageView *imgView = [[UIImageView alloc] initWithImage:img];//
    UIButton *leftBtn = [UIButton buttonWithType:UIButtonTypeCustom];//创建一个按钮
    [leftBtn setImage:img forState:UIControlStateNormal];//将图片加载在按钮上
    //只有大小有作用
    leftBtn.frame = CGRectMake(0, 0, 40, 40);//按钮的位置大小
    
    UIBarButtonItem *leftItem3 = [[UIBarButtonItem alloc] initWithCustomView:leftBtn];//
    //设置导航条左/右侧按钮
    self.navigationItem.rightBarButtonItems = @[leftItem3];//
    
    UIImageView *imgView = [[UIImageView alloc] initWithImage:img];//
    self.navigationItem.titleView = imgView;//
    
    //导航条分为3个部分
    //0. self.navigationController.navigationBar
    //1. self.navigationItem.leftBarButtonItem(s)
    //2. self.navigationItem.rightBarButtonItem(s)
    //3. self.navigationItem.title(View)
    
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];//创建一个按钮
    //设置不同状态的标题
    [btn setTitle:@"按钮" forState:UIControlStateNormal];//在常态的时候按钮显示为 “按钮”
    [btn setTitle:@"高亮" forState:UIControlStateHighlighted];//在点击按钮时 按钮显示为“高亮”
//    [btn setBackgroundColor:[UIColor redColor]];//第一种方法表示按钮的背景颜色为红色
    btn.backgroundColor = [UIColor redColor];//第二种方法表示 按钮的背景颜色为红色
    
    [btn addTarget:self action:@selector(didClicked) forControlEvents:UIControlEventTouchUpInside];//点击按钮将要执行的方法名还有执行的类型
    btn.frame = CGRectMake(0, 64, 100, 100);//设置位置和大小
    [self.view addSubview:btn];//显示按钮
}

- (void)didLeftClicked//按钮执行的方法
{
    NSLog(@"%s", __PRETTY_FUNCTION__);
}

- (void)didClicked//按钮执行的方法
{
    NSLog(@"%s", __func__);
    
    SecondViewController *viewCtrl = [[SecondViewController alloc] init];//
//    viewCtrl.view.backgroundColor = [UIColor orangeColor];//
//    [self presentViewController:viewCtrl animated:YES completion:nil];//NULL
    
    [self.navigationController pushViewController:viewCtrl animated:YES];//
    //所有被导航控制器管理的页面,都会拥有一个指针navigationController指向所在的导航控制器
    NSLog(@"2: %p", self.navigationController);//
}

@end

#import "SecondViewController.h"

@interface SecondViewController ()

@end

@implementation SecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.title = @"Second";//在第二个页面中的导航页面标题设置为这个
    
    self.view.backgroundColor = [UIColor purpleColor];//设置页面的背景颜色
    
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];//设置一个按钮
    [btn setTitle:@"第二个按钮" forState:UIControlStateNormal];//设置一个常规按钮 并命名为第二个按钮
    [btn addTarget:self action:@selector(didClicked:) forControlEvents:UIControlEventTouchUpInside];//这个按钮将执行自己的didclicked方法
    btn.frame = CGRectMake(100, 100, 200, 50);//设置按钮所在页面的位置
    [self.view addSubview:btn];//把设置的按钮加载在页面上
    
    NSLog(@"btn 1: %p", btn);
}

- (void)didClicked:(UIButton *)sender   //按钮需要执行的方法
{
    NSLog(@"%s", __func__);
    NSLog(@"btn 2: %p", sender);
    
    [self.navigationController popViewControllerAnimated:YES];//将要跳转到前一个页面
}

 

ios 导航页面的更多相关文章

  1. 关于ios导航控制器的知识总结

    关于ios导航控制器的知识总结 添加了导航控制器后: 1.一个导航控制器会有一个顶部导航栏navigationbar和一个底部工具栏toolbar,它们是导航控制器navC的属性.且导航栏默认是不隐藏 ...

  2. 在uwp仿IOS的页面切换效果

    有时候我们需要编写一些迎合IOS用户使用习惯的uwp应用,我在这里整理一下仿IOS页面切换效果的代码. 先分析IOS的页面切换.用户使用左右滑动方式进行前进和后退,播放类似于FlipView的切换动画 ...

  3. 阻止iOS中页面弹性回滚,只允许div.phone_body的区块有弹性

    使用说明:只要替换选择器:var selector = '.phone_body'; /** * 阻止iOS中页面弹性回滚,只允许div.scroller的区块有弹性 */ (function () ...

  4. 解决ios双击页面上移问题

    做webapp时,ios有个默认双击事件,会缩放页面,并将当前点击的位置居中到屏幕,本来也没什么,但是当页面中有fixed定位的元素时,这时候你就会神奇的发现,fixed元素所见不所得了! 还有就是页 ...

  5. Visual Studio跨平台开发实战(3) - Xamarin iOS多页面应用程式开发

    原文 Visual Studio跨平台开发实战(3) - Xamarin iOS多页面应用程式开发 前言 在前一篇教学中, 我们学会如何使用Visual Studio 搭配Xcode 进行iOS基本控 ...

  6. iOS 导航栏返回到指定页面的方法和理解

    关于ios中 viewcontroller的跳转问题,其中有一种方式是采用navigationController pushViewController 的方法,比如我从主页面跳转到了一级页面,又从一 ...

  7. Ios导航栏返回到指定的页面

    在自己的项目实现中有这样的一个需求.一般情况下我们的导航栏返回按钮,是上个页面跳转过来,点击返回按钮返回到上来界面.但是在实际需求中有的并不是这么简单的.有的界面返回是只确定的界面.所以当时自己在实现 ...

  8. ios 指定页面禁用第三方键盘,使用系统的键盘

    因为项目需要,需要在添加银行卡和提现页面使用数字键盘, 如果用户没有安装第三方键盘是没啥大问题的,但是如果用户手机安装了第三方的键盘的话,有时候会无法调用起第三方的数字键盘,或者第三方键盘样式不符合, ...

  9. iOS导航栏背景,标题和返回按钮文字颜色

    在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...

随机推荐

  1. Web多客户端单点登录

    一  数据库 除了用户表之外,新建一个外联表<用户票据表> fdUsTiUserID,fdUsTiType,fdUsTiTicket 分别对应用户ID,客户端类型(PC,mobile) 票 ...

  2. 郑州尚学堂:如何在Java中创建对象

    作为Java开发者,每天都会创建大量的对象,但是,我们总是使用管理依赖系统(如Spring框架)来创建这些对象.其实还有其他方法可以创建对象,在接下来的文章中我会进行详细介绍. 1.使用new关键字 ...

  3. jqGrid使用整理

    jqGrid使用整理 jqGrid是一款处理表格展现的jQuery插件,支持分页.滚动加载.搜索.锁定.拖动等一系列对表格的常规操作.以下是最近项目中实践jqGrid的整理 1.引入到项目中来 jqG ...

  4. java 导出excel(简单案例)

    public class Student { private int id; private String name; private int age; private Date birth; pub ...

  5. hdu_5927_Auxiliary Set(xjb搞)

    题目链接:hdu_5927_Auxiliary Set 题意: 给一棵n个节点的树,最开始全部都是重点,现在有q个询问,每次给你一些轻点,并叫你输出整棵树的重点数量, 轻点可能会变为重点,如果这个轻点 ...

  6. hdu_5884_Sort(二分+单调队列)

    题目链接:hdu_5884_Sort 题意: 有n个数,每个数有个值,现在你可以选择每次K个数合并,合并的消耗为这K个数的权值和,问在合并为只有1个数的时候,总消耗不超过T的情况下,最小的K是多少 题 ...

  7. openwrt 串口无法登陆

    打印这个消息后串口无法进行交互 procd: - init complete - 主要问题是 /etc下inittab脚本中 ::sysinit:/etc/init.d/rcS S boot::shu ...

  8. ESFramework 4.0 快速上手(01) -- Rapid引擎

    (在阅读该文之前,请先阅读 ESFramework 4.0 概述 ,会对本文的理解更有帮助.) ESFramework/ESPlatform 4.0 的终极目标是为百万级的用户同时在线提供支持,因为强 ...

  9. 防暴力破解 Fail2Ban之python

    fai2ban的介绍 fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH.SMTP.FTP密码,只要 ...

  10. CSS3 transform的demo1

    <!DOCTYPE html> <html> <head> <title>弹出层演示</title> <meta charset=&q ...