UI学习笔记---第八天

时间:2021-06-11 00:28:26

UINavigationController的用法   界面间传值

UInavigationController继承于UIViewController,以栈的方式管理所控制的师徒控制器,至少要有一个被管理的视图控制器

创建的时候需要用户提供一个视图控制器作为导航控制器的一个根视图控制器

出栈和人栈

UINavigationController通过控制入栈和出栈来展示各个视图控制器

视图控制器切换常用方法

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

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

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

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

定制UINavigationBar

对于navigationBar, iOS7默认的高度是64.

如果将navigationBar的透明度关闭之后,navigationBar的高度将会变为44

整理

每一个视图控制器都有一个navigationItem属性,当这个控制器被嵌入到UINavigationController里之后UINavigationController的navigationBar会根据控制器的navigationItem属性显示标题,左按钮,右按钮等等

 
UINavigationController  push到哪个控制器,哪个控制器的view就会显示在UINavigationController 的contentView里面.同时  ,navigationBar也会根据navigationItem配置bar的显示
 
 
UINavigationBar属于MVC的V层,主要负责  导航条上的内容的显示,以栈的方式管理了一组navigationItem,展示的内容是由每一个控制器的navigationItem决定(有没有标题,有没有左右按扭,有几个,分别执行什么事件等等),另外navigationBar也有自己的属性,比如背景图片,tintColor,barTintColor等
 
UINavigationItem属于MVC中得M层,为UINavigationBar提供展示的数据(包括标题,左右按钮)
 
UIBarButtonItem用于描述 条形视图 (UINavigationBar,UIToolBar等) 上的一个按钮,也属于Model
 
UINavigationController导航控制器属于MVC中得C,主要功能:以栈的方式管理控制器的切换(视图的切换和导航栏内容的切换,) 并伴有动画效果,每个控制器实现自己视图的布局以及事件处理,导航控制器仅仅负责切换,重要的属性:viewControllers,navigationBar 等
//UINavigationController包含一个UINavigationBar
//UINavigationBar管理多个UINavigationItem
//UINavigationItem包含多个UIBarButtonItem
 
 
界面间传值
1.属性传值   ---从前往后传
2.单例传值   ---万能
3.代理传值   ---从后往前
//属性传值
//1.后面的界面定义一个属性 用于保存 ,前一个界面需要传过来得值
//注意:属性定义成字符串还是别的类型,取决于你的需求,本例我们需要一个字符串,用于label显示
//2.后面的界面创建完毕之后,为属性赋值(即:记录需要传递的值)
//3.在需要使用值得地方,使用属性记录的值
//这种通过定义属性,达到传值目的的方式,称为属性传值
//属性传值,.一般用于 从前一个界面向后一个界面传值

//代理传值:从后一个界面往前一个界面传值

//流程

//1.后一个界面定义一个协议,并且定义一个属性叫delegate

//2.在前一个界面进入后一个界面的瞬间(即:创建完后一个界面之后).让前一个界面作为后一个界面的delegate

//3.前一个界面事件代理方法

//4.后一个界面在合适的机会, 让代理执行代理方法 (传得值以参数的形式含在代理方法里)

单例传值

先建一个类,设置单例模式,并加一个属性,用来存值

//Singleton.h中代码
#import <Foundation/Foundation.h> @interface Singleton : NSObject
+ (Singleton *)sharedsingleton;
@property (nonatomic,retain) NSString *str;
@end
//Singleton.m中代码 #import "Singleton.h" @implementation Singleton
static Singleton *single = nil;
+ (Singleton *)sharedsingleton
{
@synchronized(self){
if (single ==nil) {
single = [[Singleton alloc] init];
}
return single;
}
}
@end

在一个界面的button触发事件的方法中加入下面代码

Singleton *s = [Singleton sharedsingleton];

s.str = _textfield.text;

在需要接受值得页面加入

self.navigationItem.title = [Singleton sharedsingleton].str;//传过来的值设置为bar中title值

UI学习笔记---第八天的更多相关文章

  1. 《JavaScript权威指南》学习笔记 第八天 Node Tree

    前几天介绍了DOM的知识,以及节点的操作.今天我们来重点理解下Node的属性以及方法. 在Document文档里属于Node的东西很多: 其中Document对象是Node对象最大的对象,平时我们使用 ...

  2. Semantic ui 学习笔记 持续更新

    这个semantic 更新版本好快~ 首先是代码的标识<code></code> 具体样式就是红框这样的 圈起来代码感觉不错 不过要在semantic.css里在加上如下样式~ ...

  3. UI学习笔记---第十天UITableView表视图编辑

    UITableView表视图编辑 表视图编辑的使用场景 当我们需要手动添加或者删除某条数据到tableView中的时候,就可以使用tableView编辑.比如微信 扣扣中删除和某人的通话 当我们需要手 ...

  4. UI学习笔记---第二天

    程序的执行流程 一.自定义视图 自定义UILebal-UITextField视图 ⾃定义视图:系统标准UI之外,⾃己组合而出的新的视图. 实际开发中,我们还需⾃定义视图.积累⾃己的代码库.⽅便开发. ...

  5. UI学习笔记---第一天

    一.iOS概述 iOS是Apple公司的移动操作系统,主要⽤用于iPhone.iPad.iPad Mini.iPod Touch等移动产品. 借助iOS,我们可以开发视频类.美图类.新闻类.⾳乐类.团 ...

  6. 基于AngularJS的Onsen UI --Onsen UI学习笔记

    AngularJS与Onsen UI的结合,Onsen UI应用程序实际上是一个AngularJS 1应用程序. <!doctype html><html lang="en ...

  7. &period;Net Core&comma;VUE&comma;VS Code&comma;Sql Sugar&comma;Element UI学习笔记

    1..Net Core的目的是跨平台,并主要目标是作为服务端开发使用.从3.0开始,引入了Winfrom和WPF. 2..Net Core可以引用.Net Framework生成的dll和exe,不限 ...

  8. Amaze UI学习笔记——JS学习历程一

    1.自定义事件 (1)一些组件提供了自定义事件,命名方式为{事件名称}.{组件名称}.amui,用户可以查看组件文档了解.使用这些事件,如: $('#myAlert').on('close.alert ...

  9. jquery ui学习笔记

随机推荐

  1. c &plus;&equals; c-- &vert; &plus;&plus;b&semi;

    一切都是从这开始的 一个大一学弟通过QQ给我发来一个C++的题: int c = 8, b = 3; c += c-- | ++b; 问c的值是多少.通过笔算得到c为19,然后随手建了个C#控制台项目 ...

  2. centos install zookeeper cluster

    1.apache官方下载, 2.新版本需要jdk环境,然后配置好jdk环境 3.解压zookeeper,进入解压后的conf,新建zoo.cfg (删掉自带的cfg)内容如下 tickTime=200 ...

  3. 2016年10月15日 星期六 --出埃及记 Exodus 18&colon;26

    2016年10月15日 星期六 --出埃及记 Exodus 18:26 They served as judges for the people at all times. The difficult ...

  4. &lbrack;React&rsqb; React Router&colon; Nested Routes

    Since react-router routes are components, creating nested routes is as simple as making one route a ...

  5. web编程速度大比拼(nodejs go python)(非专业对比)

    C10K问题的解决,涌现出一大批新框架,或者新语言,那么问题来了:到底谁最快呢?非专业程序猿来个非专业对比. 比较程序:输出Hello World! 测试程序:siege –c 100 –r 100 ...

  6. 如何利用动态URL提升SEO及处理业务逻辑

    如果你正在建设一个新网站或者对现有网站重新设计,我们认为应该将网站的 URL 转换为用户友好的 URL,或搜索引擎友好的 URL,这类 URL 也称为语义 URL(Semantic URL).哪些UR ...

  7. IntelliJ IDEA 集成 SVN

    在idea中使用subversion提交代码需要使用SVN SVN下载官网:https://tortoisesvn.net/downloads.html 可以根据自己电脑下载相应的版本,如果安装了的需 ...

  8. safari10&period;0以上版本出现默认小人头图标

    1.可能改input输入框外层有兄弟元素在input之前,将input元素位置放置在所有兄弟元素之前即可

  9. Linux&lpar;CentOS 7&rpar;命令行模式安装VMware Tools 详解

    本篇文章主要介绍了如何在Linux(CentOS 7)命令行模式安装VMware Tools,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. 本例中为在Linux(以CentOS 7为例)安装VM ...

  10. oracle 创建表空间 、用户 、赋权、建表

    一.创建表空间 1.创建临时表空间 create temporary tablespace TS_TEM_TAB_SPACE tempfile 'D:\oracle\TS_TEM_TAB_SPACE. ...