//控制器: UINavigationController(有层级关系, 一般:都是这一页进入下一页),栈管理(push, pop, 一般都是 self.navigation push ) UITabBarController(并列关系, 微信, QQ 页面, 下面都有很多的按钮, 是放在UITabBarController管理的页面的 viewController 中.); 没有关系:模态切换(一个页面进入其评论页面, 一般都是 prent, dismiss);
//navigationController 自带view(有导航栏),navigationItem
//tabBarController 自带 view(有 tabBar),tabBarItem
//tabelViewController, 自带 view(是tabelView)
//UIView 自带 view; 之后, 用 self
//具体:
//导航控制器如何管理视图控制器?
//1.通过栈的形式管理视图控制器(管理的都是视图控制器)
//2.切换到下一个页面, 入栈(push)
//3.返回到上一个页面. 出栈(pop)
//4.展示的栈顶的视图控制器
//5.视图控制器共用的导航栏
//标签视图控制器是如何管理视图控制器?
//1.并列关系
//2.共用一个标签栏(tabBar),tabBar 的高度为49pt(设计)
//3.每一个视图控制器都有一个 tabBarItem, 用于管理在标签栏上展示的内容
//4.刚开始只加载第一个页面, 其他页面必须点击才加载, 每个页面只加载一次, 反复点击, 不重复加载.
//5.标签栏上最多展示5个, 超过5个, 最后一个会变成 more, 把其余的标签
//控件: 大小frame, background 测试, 添加到父视图,
//button,
//自身以及 UIcontroller 子类, 都可以关联方法; button,TouchUpInside; 其他是 valueChange
//1.便利构造器, 不需要释放;
//2.初始化: system-按下可以,可以闪,蓝色字体; custom-自定义, showTouchWhenHeighlighted, 按下,可以闪动.
//输入框:textField.borderStyle = UITextBorderStyleRounedRect(圆角)
//imageView: clipBounds = YES, layer.cornerRadius = 半径
//textAlignment = NSTextAlignmentCenter
//UISegementedControl, 分页, 数组
//传值:
//1.传值方式
//1.属性传值: 从前一个页面向后一个页面传值
//a.在后一个页面, 根据传值的类型和个数, 写属性
//b.在前一个页面, 为属性赋值
//c.在后一个页面, 使用值
//2.代理传值: 从后一个页面向前一个页面传值
//后一个页面(找代理)
//a. 制订协议
//b. 写delegate 属性
//c. 在合适的时候, 让代理协议执行方法
//3.前一个页面(成为代理)
//a.建立关系
//b.遵守协议
//c.实现协议方法
//4.单例传值: 多个页面间的传递
//a.创建单例类
//b. 根据参数的个数和类型, 在单例中写属性
//c. 内容存入单例
//d. 从单例中取内容
//缺点:
//a.创建对象时, 必须使用单例方法, 不能使用 alloc + init
//b.单例到程序结束才释放, 内部不能放过大的数据.(应用从头到尾都要用, 就设置为单例)
//5.block 传值: 从后一个页面到前一个页面(只要能写成代理传值,都可以写成 block 传值)(一般更简单)
//后一个页面
//a.对 block 类型, 重命名
//b.写 block 属性, 分装 pass,优化
//c.在合适的 时候, 调用 block
//三天的 TabelView(基础, 编辑, 自定义)
// UITableView, 继承于 UIScrollView
//plist文件, 1.先读取文件, 2.数据分装(将读取的文件放到,自己的文件中) 3.展示(行,单元行) 注意使用函数(方法)
//tableView编辑的步骤:
//1.让 tabelView进入编辑状态 ,(导航栏按钮自带方法 editing,注意 super 也要调用)
//2.指定哪些行, 进入编辑(默认全选), 可选的 canEditing
//3.指定编辑的样式(默认是删除), 可选的 editStyle, 可以添加, 也可以删除(只有他在 delegate 中)
//4.编辑完成 commit
//tableView移动的步骤
//1.让tableView 进入编辑状态, 第一步一样
//2.指定哪些行, 进入 移动状态, canmove
//3.移动完成,sourceIndextPath to destionatinPath
//4.限制移动(因为有的行, 不能被编辑, 但是移动会影响它), 分区之间propse (在 delegate 中)
//plist文件的建立
//数据分装(自己文件中建立属性根据 plist 外层) ;UITabelViewController
//对象属性的建立(对应字典), KVC的重写初始化dictionary ;NSObject
//自定义 cell(对应战士的内容- 底板), 封装 ;UITabelViewCell
//不同页面之间的切换(传值, 更新数据)
//计算行高
/*
NSDictionary *dic = @{NSFontAttributeName: [UIFont systemFontOfSize:17]};
CGRect rect = [joke.content boundingRectWithSize:CGSizeMake(kScreenWidth - kMargin, 0) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes: dic context:nil];
//单元格行高是: 所有总的高度
return rect;
*
iOS视图控制器总结
最新推荐文章于 2018-06-12 11:11:38 发布