博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UINavigationController
阅读量:6498 次
发布时间:2019-06-24

本文共 3200 字,大约阅读时间需要 10 分钟。

UINavigationController继承于UIViewController(任何继承自UIViewController的类,都可以作为根控制器), 以栈的方式管理视图控制器.

UINavigationController的contentView始终显示栈顶的view

入栈,出栈

pushViewController:animated //进⼊入下⼀一个视图控制器

popViewControllerAnimated: //返回上⼀一个视图控制器

popToViewController:animated //返回到指定的视图控制器

popToRootViewControllerAnimated //返回到根视图控制器 

常用属性

viewControllers //所有处于栈中的控制器

topViewController //位于栈顶的控制器

visibleViewController //当前正在显⽰示的控制器

navigationBar //导航条 

-----------------------------

navigationcontroller直接控制viewcontrollers,navigationcontroller还包含navigationBar属性形成整个导航栏

navigationItem包含了bar视图的全部元素(如title,tileview,backBarButtonItem等),受当前viewcontroller管理, 每个navigationController页面的导航栏元素由所在页面的navigationItem管理。即设置当前页面的左右barbutton,用 self.navigationItem.leftBarButtonItem

-----------------------------

    //导航条的颜色

    self.navigationController.navigationBar.barTintColor = [UIColor grayColor];  //导航栏的颜色

    self.navigationController.navigationBar.tintColor = [UIColor blueColor];      //导航栏上的按钮颜色

    self.navigationController.navigationBar.translucent = NO;

    self.navigationController.navigationBar.hidden = NO;   //隐藏导航栏,navigationBar的属性

    self.navigationController.navigationBarHidden = YES; //也可以隐藏导航栏, 是navigationController的属性

    //导航条文字属性

    NSDictionary *dic = @{

NSFontAttributeName:[UIFont systemFontOfSize:18], NSForegroundColorAttributeName:[UIColor redColor]};

    self.navigationController.navigationBar.titleTextAttributes = dic;

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"1"] forBarMetrics:UIBarMetricsDefault];

    self.navigationItem.title = @"标题";

    UISegmentedControl *segmentC = [[UISegmentedControl alloc] initWithItems:@[@"郑州", @"新乡"]];

    self.navigationItem.titleView = segmentC;

    UIBarButtonItem *leftBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:self action:nil];

    self.navigationItem.leftBarButtonItem = leftBtn;

//如果有多个btn,可以放在数组中,然后赋给barButtonItems

    UIBarButtonItem *rightBtn1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(handleRightBtn:)];

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

    UIBarButtonItem *rightBtn3 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:self action:@selector(handleRightBtn:)];

    NSArray *arr = @[rightBtn1, rightBtn2, rightBtn3];

    self.navigationItem.rightBarButtonItems = arr;

----------------------------------------------------------------------------------------------

UIToolBar

self.navigationController.toolbarHidden = NO;

self.navigationController.toolbar.translucent = NO;

NSArray *arrBtns = @[btn1, btn2, btn3];  //创建三个UIBarButtonItem加入到数组中

self.toolbarItems = arrBtns;

此时按钮是挤在一起的, 解决方法

UIBarButtonItem *fixBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];

fixBtn.width = 90;

添加在数组中btn1和btn2之间,btn2和btn3之间

方法二:

创建 UIBarButtonItem *fixBtn2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

添加到数组中, 不需要设定宽度,系统自动设定。

转载于:https://www.cnblogs.com/lion-witcher/p/5167714.html

你可能感兴趣的文章
pbrun
查看>>
浏览器加载和渲染网页顺序
查看>>
微服务架构springcloud
查看>>
深入剖析Android系统试读样章
查看>>
测试用例出错重跑--flaky插件
查看>>
yaf的安装
查看>>
比较java与C++的不同
查看>>
Twitter Storm入门
查看>>
使用scikit-learn进行文本分类
查看>>
Ansible自动化运维配置与应用(结合实例)
查看>>
下面简要介绍软件工程的七条原理
查看>>
java POI实现excel实现表格导出
查看>>
Lua(三)——语句
查看>>
TensorFlow的基本运算01
查看>>
怎么看电脑有没有安装USB3.0驱动
查看>>
overflow清除浮动的原理
查看>>
Spring Boot 使用parent方式引用时 获取值属性方式默认@
查看>>
解决maven下载jar慢的问题(如何更换Maven下载源)
查看>>
linux安装gitLab
查看>>
concurrent包的实现示意图
查看>>