IOS之UIKit_Day11
day11
回顾:
1.UITabBarController
.viewControllers存储管理的所有控制器
.tabBaritem.title
.tabBaritem.image
.tabBaritem.selectedImage
.tabBaritrm.badgevalue
.tabBarController.tabBar.tintColor
.tabBarController.tabBar.hidden
.tabBarController.selectedindex可读可写的属性,用于获取或设置tabBar中激活的vc的下标
注意:tabltem的数目不要多余5个,一旦多于5个 那么最后一个item自动变成“更多”点击更多后,会由单独的界面展示选项
2 OtherControl
2.1UIsegmentedControl 分段控件
重要的属性:.selectedSegmentindex
事件:ValueChanged
2.2Activity Indicator活动指示器
属性:isAnmating
方法:startAnimating
stopAnimating
2.3Progress View进度条
属性:progress(0—1的值)
2.4Date Picker
属性:date
2.6Picker View
以多列的方式,来显示数据,数据是可以自定义的
通过与表格类似的流程来加载自定义的数据
step1:在界面中添加Picker之后选中第六个检查器 为Picker连接dataSource和Delegate属性 点击加号 连线倒左边的file owner
step2:遵守协议(dataSource和delegate)
step3:实现方法:
三问一答
1》有几列
2》每一列有多少行
3》每一行的title是什么? 每一行的内容可以是字符串也可以是复杂的View
4》选中某一行后的响应
3 IOS8中的警告框和操作表
step1:创建UIAlertController的实例 并且创建实例时指明警告框的样式 还操作表的样式
step2:创建UIAlertAction代表可点击的按钮 在创建的时候,可以借助于block把按钮的行为设定好
step3:将action添加倒controller中
step4:使用self presentViewController的方法推出控制器
*********************************************************************
1.Storyboard 故事板
1.1 为什么需要故事板?
因为在使用xib文件制作界面时存在一下两个问题
1》多个Xib之间的表达的界面的层级关系 以及界面的进行关系无法在第一时间准确的把握
2》代码中会有大量的创建目标控制器类似于initWithNibName这样的代码 一旦有任何改动那么所有initWithNibName都要修改 进行路线发生变化
基于以上两个问题 希望能够将App看成一个整体,能够清晰的表达界面的进行路线,以及对各个控制器的创建工作能够进行同一管理,于是从IOS5以后 推出了故事板技术来代替xib
1.2 什么是故事板?
一个特殊的文件 后缀是StoryBoard本质还是一个xib文件 用于记录在应用中各个界面的行进路线能够以图形花的方式设计界面,并且对于其中使用的控制器能自动的创建
1》程序启动时的流程
1.在工程中的配置中要配置Main Interface为故事板 然后在故事板中设置其实场景 ,然后启动工程 第一个展示的界面对应的控制器实例就有故事板来自动创建了
2.场景
值得是故事板中的第一个节点节点中可以包含控制器第一响应者出口以及该场景的过度(segue)
3 设计界面
设计方法:与使用xib时没有区别
连线动作:没有区别
连线输出口:没有区别
重点需要注意的是:一旦需要对场景中的VC进行编码时,一定要单独创建一个没有xib文件的控制器类 并且将故事板中的场景的VC与创建的控制器类绑定在一起
如何绑定:选中场景 点击第三个检查器 选择class属性 后面的下拉框 找到对应的控制器类即可
// 在推出两个vc之前,截获segue这个动作
// 一个场景,如果有多个跳转动作
// 不管是哪个跳转动作发生,在跳转之前都会先执行这个方法
// 其中第一个参数代表的就是本次发生跳转的那个segue对象
// 在segue这个对象中,记录了一些信息,其中包含这个segue对象的标示符,包含本次segue,也就是跳转的源头控制器实例,以及跳转到的目标控制器实例
- (void)prepareForSegue:(UIStoryboardSegue *)seguesender:(id)sender{
if([segue.identifier isEqualToString:@"s1"]) {
//跳到SecondVC
//目标:获取跳转到的secondVC实例
//为这个实例的info属性赋值
SecondViewController *svc = (SecondViewController*)segue.destinationViewController;
svc.info= @"这是第二个vc";
}else{
//跳到ThirdVC
ThirdViewController *tvc = (ThirdViewController*)segue.destinationViewController;
tvc.info= @"这是第三个vc";
}
}
1.4 使用storyBoard配置各种控制器
1》导航
2》标签
3》表格
选中表视图后 设置表是stactic(静态)还是dynamic(动态)的
选中的表视图中的prototypeCell (原型的单元格)在第四个检查器中修改为自定义单元格或者是4中基本样式中的一个类型
一定要为prototype cell 设置identifier 因为这一次的设置相当于在原来的viewDidLoad中写的regist 注册单元格
为标示图绑定自己创建的继承子uitableViewController的类 回答三问一答
期中 viewDidLoad中已经不需要使用regist方法来注册单元格了 在第三问中 只需要直接从队列中按照storyBoard中设置的identifier来dequeu单元格即可。
注意:
1。identifier区分大小写
2。deque单元格时,可以使用带有forIndexPath参数的那个方法了
1.5 传值
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。