8.15 :
一.UIStoryboardSegue的使用
prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?)
sender: 触发跳转事件发生的控件 (例如Button或者tableViewCell等)
segue指的是Storyboard中两个页面的连接
可以用storyboard reference 连接拆分多个storyBoard,连接的Storyboard要有初始化页面(reference中填storyboard名)
1.根据Cell获取IndexPath
2.通过UIStoryboardSegue可以获取到起点页面和终点界面
二.页面创建的生命周期
init -> awakeForomNib(StroyBoard启动) -> LoadView(唯一一个可以更换self.view的地方,慎用) -> viewDidLoad -> viewWillAppear ->viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear
布局过程会被多次调用
8.17
一. TabBar 标签栏
1.标签栏 也是一个ViewController
2.标签栏可以装多个ViewController
3.标签栏的UITabBarControllerDelegate 代理协议(可以获取使用标签栏跳转的多个时机,例如可以在ShouldSelect中阻止跳转,只能阻止通过标签栏的跳转)
4.可以通过IndexPath跳转 : tabBarController.selectedIndex = Index
5.标签栏与导航栏的联合使用
二. 存储数据
1.NSUserDefaults Foundataion框架下的
//key - value 方式存储 , 存储少量信息 - 例如存储配置信息
let ud = NSUserDefaults.standardUserDefaults()
以键值对方式存储:
ud.setBool(false, forKey: "playing") 存储
let value = ud.dateForKey("playing") 取值
2.//NSURL/NSString/NSNumber/NSArray....特有的writeToFile(path, atomically: true, encoding: NSUTF8StringEncoding)
3.NSKeyedArchiver/NSKeyedUnarchiver
NSKeyedArchiver.archiveRootObject 归档
NSKeyedArchiver.archivedDataWithRootObject 归档(NSData)
解归档
(1)NSKeyedArchiver.archivedDataWithRootObject 通过NSData
(2)NSKeyedUnarchiver.unarchiveObjectWithFile 通过文件路径
8.18
一. 比较少用到的简单控件(ValueChanged类型)
1.segmentedControl 分段控件,提供单选,可以不记录状态(改变momentary的Bool值)
2.switch 开关
3.Slider 滑动条 可以连续触发(continuous 默认是true)
4.pageControl 页面选择
5.1pickerView 与tableview类似 也有datasourcedelegate协议
(1)pickerViewDatasource
func 多少comp
func 多少row
(2).pickerViewDelegate
func title
func pickerView view可以重用
5.2 datePickerView (valueChanged类型)
let datePick = UIDatePicker(frame: CGRect(x: 0, y: 300, width: self.view.frame.width, height: 100))
datePick.addTarget(self, action: #selector(didDate(_:)), forControlEvents: .ValueChanged)
有几种模式
datePick.datePickerMode = .DateAndTime
//.Time//时:分:上午/下午
//.Date//日期:时:分//.DateAndTime
//日期:时:分:上午/下午
//.CountDownTimer //小时:分钟
-
UIWWebView(简单提及,可以自己去了解)
webView.loadRequest 加载请求
UIWebViewDelegate 网页加载的各个时机
1.手势
//瞬间触发: 作用时间短, 位移相对小, 一般只会触发一次
//tap/swipe
//持续触发: 作用时间长或位移相对大, 会定时或相隔一段距离触发
//pinch/rotate/long press/pan
view.addGestureRecognizer
2.自定义控件
1.展示性控件,可以通过几个控件组合(目前)
2.Target-Action
2.1 使用UIContr 和 UIResponder,控件被触摸时触发控件内部的事件
2.2 当控制控件的关键值改变时候,应该在didSet里面调用NeedsLayout()去重新布局(使控件界面改变)
2.3 选择适当的时机,发送相对应的控件控制事件的动作sendActionsForControlEvents
例如switch开关,当触摸控件的是,在BeginXXX()中调用改变控件颜色的方法,并且发送action给相对应的控制事件
action在外部使用addTargetAction添加,控制事件要相同(例如valueChanged)
2.4 完善一些控件的值改变的安全控制
网友评论