收集iOS--UINavigationController的常用属性

导航控制器 (UINavigationController )

高度:44

组成:UINavigationBar(上) ,NavigationView(中), Navigation toolbar(下) 组成

简述:可以管理一系列显示层次性信息的场景。 第一个场景显示有关特定主题的高级视图,第二个场景用于进一步描述,第三个场景再进一步描述。

过程 : 它会创建一个视图控制器“栈” 栈底是根视图控制器。当用户在场景之间进行切换时候,一次将视图控制器压入栈中,并且当前场景的视图控制器位于栈顶。要返回到上一级,导航控制器将弹出栈顶的控制器,从而回到它下面的控制器。

术语: push (压入) pop(弹出)来描述导航控制器

present          dismiss

modal 出来的控制器 是没有导航栏的

-(void)buttonClick{  // 弹出窗口的两种方式

#import "MIONavigationController.h" // 第一种要 导入头文件

1. 有导航栏

MIONavigationController *nav =[[MIONavigationController alloc] initWithRootViewController:[[MIOSearchVC alloc]init]];

[self presentViewController:nav animated:YES completion:nil];

2. 没有导航栏

MIOSearchVC *svc  = [[MIOSearchVC alloc]init];

[self.navigationController presentViewController:svc animated:YES completion:nil];

}
用户输入信息的view 结束后自动回复到之前的view  用 presentModalViewController 比较适合

NavigationBar ->  Navigationitem ->  (UIBarButtonItem)  leftBarButtonItem  (左边)

rightBarButtonItem(右边)

backBarButtonItem

3. 实例:创建一个导航项

UINavigationItem *navigationItem =[ [ UINavigationItem alloc] init]

4. 创建一个左边的按钮

UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]initwithTitle:@“编辑” style:UIBarButtonItemStylePlain target:self action:@selector(beginEdit:)];

5. 设置导航栏内容

navigationItem.title = “hello”;

把左边按钮添加到导航栏集合中

[navigationItem setLeftBarButtonItem : rightButton];

或者self.navigationItem.rightBarButtonItem = rightButton

titletextAttributes 可以设置title 部分字体

可以通过titleVIew 属性 指定一个定制的titleview 指定的frame 不要显示出界

Navigation toolbar(下)

显示工具栏

self.navigationController.toolbarHidden = NO ;

■   UINavigationController的使用步骤

➢   初始化UINavigationController

➢   设置UIWindow的rootViewController为UINavigationController

■   根据具体情况,通过push方法添加对应个数的子控制器

UINavigationController的子控制器

■   UINavigationController以栈的形式保存子控制器

@property(nonatomic,copy) NSArray *viewControllers;

@property(nonatomic,readonly) NSArray *childViewControllers;

■   使用push方法能将某个控制器压入栈

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;

■   使用pop方法可以移除控制器

➢   将栈顶的控制器移除

- (UIViewController *)popViewControllerAnimated:(BOOL)animated;

➢   回到指定的子控制器

- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;

➢   回到根控制器(栈底控制器)

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;

如何修改导航栏的内容

■   导航栏的内容由栈顶控制器的navigationItem属性决定

■

■   UINavigationItem有以下属性影响着导航栏的内容

➢   左上角的返回按钮

@property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;

➢   中间的标题视图

@property(nonatomic,retain) UIView          *titleView;

➢   中间的标题文字

@property(nonatomic,copy)  NSString        *title;

➢   左上角的视图

@property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;

➢   UIBarButtonItem *rightBarButtonItem  右上角的视图

@property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;

应用实例:

UINavigationController *nav =[[UINavigationController alloc] init];

//设置导航栏背景图片

[ nav.navigationBar setBackgroundImage:[UIImage imageNamed:@“@"mine-setting-icon"”] forBarMetrics: UIBarMetricsDefault]

//设置导航栏内容

self.navigationItem.title = @"我的";

//设置随机背景色

self.view.backgroundColor =[UIColor colorWithRed:arc4random_uniform(100)/100.0 green:arc4random_uniform(100)/100.0 blue:arc4random_uniform(100)/100.0 alpha:1.0];

//(只设置一个的情况)

//设置导航栏右边的按钮

UIButton *settingButton =[UIButton buttonWithType:UIButtonTypeCustom];

[settingButton setBackgroundImage:[UIImage imageNamed:@"mine-setting-icon"] forState:UIControlStateNormal];

[settingButton setBackgroundImage:[UIImage imageNamed:@"mine-setting-icon-click"] forState:UIControlStateHighlighted];

settingButton.size = settingButton.currentBackgroundImage.size;

[settingButton addTarget:self action:@selector(settingClick) forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:settingButton];

——————————————————————————————————————————————————————

//(设置两个情况)

UIButton *settingButton =[UIButton buttonWithType:UIButtonTypeCustom];

[settingButton setBackgroundImage:[UIImage imageNamed:@"mine-setting-icon"] forState:UIControlStateNormal];

[settingButton setBackgroundImage:[UIImage imageNamed:@"mine-setting-icon-click"] forState:UIControlStateHighlighted];

settingButton.size = settingButton.currentBackgroundImage.size;

[settingButton addTarget:self action:@selector(settingClick) forControlEvents:UIControlEventTouchUpInside];

UIButton *settingButton2 =[UIButton buttonWithType:UIButtonTypeCustom];

[settingButton2 setBackgroundImage:[UIImage imageNamed:@"mine-setting-icon"] forState:UIControlStateNormal];

[settingButton2 setBackgroundImage:[UIImage imageNamed:@"mine-setting-icon-click"] forState:UIControlStateHighlighted];

settingButton2.size = settingButton2.currentBackgroundImage.size;

[settingButton2 addTarget:self action:@selector(setting2Click) forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.rightBarButtonItems = @[

[UIBarButtonItem alloc]initWithCustomView:settingButton],

[UIBarButtonItem alloc]initWithCustomView:setting2Button]

];

——————————————————————————————————————————————————————

6. 隐藏导航栏

self.navigationController.navigationBar.hidden = YES;

self.navigationController.navigationBarHidden = YES;

[self.navigationController setNavigationBarHidden:YES animated:NO];

#import "UIBarButtonItem+MIOExtension.h"

7. 快速创建 按钮

self.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithImage:@"MainTagSubIcon"highImage:@"MainTagSubIconClick" target:self action:@selector(tagClick)];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,227评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,973评论 4 60
  • 火车在群山峻岭呼啸而过,撕裂了黑夜的寂静,犹如裂帛的碎裂和畅快。看着窗外漆黑一片,只有让人无法呼吸的风倒灌进...
    木子甜阅读 557评论 3 4
  • 墓园满是遗失的春情 情诗住着回响的叮嘤 哀思窥视仅剩的偏心 冷塌角隅复得的自私
    一宇渡鸦阅读 166评论 0 2
  • 李子香香阅读 215评论 0 2