UI学习笔记---第八天

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学习笔记---第八天

时间: 2024-10-06 22:26:26

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

UI学习笔记---第一天

一.iOS概述 iOS是Apple公司的移动操作系统,主要?用于iPhone.iPad.iPad Mini.iPod Touch等移动产品. 借助iOS,我们可以开发视频类.美图类.新闻类.?音乐类.团购类.电商类.阅读类.出?行类.?生活服务类.游戏类等应?用程序. 除此之外,iOS还可以与外部设备通信,开发出更多改变?活的产品,?比 如:智能家居(iOS App控制电视.空调等).健?产品(将人体健康 状况通过App直观的展现出来)等. 二.UI概述 UI(User Interface):?

UI学习笔记---第十四天数据持久化

一.沙盒机制 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件 每个应用程序在iOS系统内斗放在了统一的文件夹目录下 沙盘路径的位置 1. 通过Finder查找程序沙盘相对路径 ~/Library/Application Support/iPhone Simulator 2. 通过代码查找程序沙盘相对路径 NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory,NSSearc

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

UITableView表视图编辑 表视图编辑的使用场景 当我们需要手动添加或者删除某条数据到tableView中的时候,就可以使用tableView编辑.比如微信 扣扣中删除和某人的通话 当我们需要手动调整单元格的顺序时,就可以通过tableView移动,移动单元格到指定位置 代理AppDelegate.m中代码 #import "AppDelegate.h" #import "RootViewController.h" @implementation AppDel

UI学习笔记---第十一天UITableView表视图高级-自定义cell

自定义cell,多类型cell混合使用,cell自适应高度 自定义cell就是创建一个UITableViewCell的子类 把cell上的空间创建都封装在子类中,简化viewController中的代码 cell中的空间如何显示Model中的信息 cell中声明一个Model类型的属性,viewController中获取到Model对象后赋值给cell的Model属性 cell中重写Model的setter方法,把Model对象中的内容重新赋值给各个控件 M和V不直接通信,C负责M和V之间进行通

UI学习笔记---第十三天可视化设计 XIB, StoryBoard

一.XIB Xib是一种苹果提供的快速构建界面的编程方式,主要是为了简化MVC中的V的构建 Xib提供可视化的编辑界面,能大大提升页面布局效率 Xib常用操作 为控件关联事件 为空间指定delegate 为控件关联实例变量或者属性 二.StoryBoard的使用 StoryBoard的注意事项 在AppDelegate的-application: didFinishLaunchingWithOptions: 的方法中不要再用代码初始化一个window 将创建好的StoryBoard在应用程序配置

UI学习笔记---第六天

UIControl及其子类 UISegmentedControl的用法 UISegmentedControl是iOS中得分段控件,每个segment都能被点击,相当于集成了若干个button.通常我们会点击不同的segment来切换不同的view 常用方法 initWithItems: //UISegmentedControl独有的初始化方法,?用来创建多个分段 setTitle: forSegmentAtIndex: //为指定下标的分段设置title setImage: forSegment

UI学习笔记---第十六天XML JSON解析

一.解析的基本概念 从事先规定好的格式中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据,数据方按照格式获取数据 常见解析方式XML解析JSON解析 二.XML:可扩展标记语言 XML数据格式的功能:数据交换 web服务  内容管理  用作配置文件 一对标签称为一个节点  节点可以包含节点   没有子节点叫叶子节点  只有一个根节点  节点可以相互嵌套 三.进行XML解析时使用到的SAX工具 SAX:Simple API for XML  基于事件驱动的解析方式,逐行解析数据.(

UI学习笔记---第四天

事件处理 事件概述 UIEvent:事件,是由硬件捕捉的一个表示用户操作设备的对象 分三类:触摸事件\  晃动事件\ 远程控制事件 触摸事件:会包含1个到多个触摸点 实现触摸 UIView支持触摸事件(因为继承于UIResponder),而且支持多点触摸 需要定义UIView子类,实现触摸相关的方法 touches..begin     touches..moved    touches..ended     touches..canceled UI学习笔记---第四天

UI学习笔记---第二天

程序的执行流程 一.自定义视图 自定义UILebal-UITextField视图 ?定义视图:系统标准UI之外,?己组合而出的新的视图. 实际开发中,我们还需?定义视图.积累?己的代码库.?便开发. ?己封装的视图,能像系统UI控件一样,?于别的项目中,能?大降 低开发成本,提?开发效率. 自定义视图步骤 根据需求的不同,?定义视图继承的类也有所不同.?般?自定义的视图会继承于UIView.以下是?定义视图的要点: 1.创建?个UIView子类 2.在类的初始化方法中添加子视图 3.类的.h?文