8.15 :
一.UIStoryboardSegue的使用
prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?)
sender: 觸發(fā)跳轉事件發(fā)生的控件 (例如Button或者tableViewCell等)
segue指的是Storyboard中兩個頁面的連接
可以用storyboard reference 連接拆分多個storyBoard,連接的Storyboard要有初始化頁面(reference中填storyboard名)
1.根據Cell獲取IndexPath
2.通過UIStoryboardSegue可以獲取到起點頁面和終點界面
二.頁面創(chuàng)建的生命周期
init -> awakeForomNib(StroyBoard啟動) -> LoadView(唯一一個可以更換self.view的地方,慎用) -> viewDidLoad -> viewWillAppear ->viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear
布局過程會被多次調用
8.17
一. TabBar 標簽欄
1.標簽欄 也是一個ViewController
2.標簽欄可以裝多個ViewController
3.標簽欄的UITabBarControllerDelegate 代理協(xié)議(可以獲取使用標簽欄跳轉的多個時機,例如可以在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 分段控件,提供單選,可以不記錄狀態(tài)(改變momentary的Bool值)
2.switch 開關
3.Slider 滑動條 可以連續(xù)觸發(fā)(continuous 默認是true)
4.pageControl 頁面選擇
5.1pickerView 與tableview類似 也有datasourcedelegate協(xié)議
(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.手勢
//瞬間觸發(fā): 作用時間短, 位移相對小, 一般只會觸發(fā)一次
//tap/swipe
//持續(xù)觸發(fā): 作用時間長或位移相對大, 會定時或相隔一段距離觸發(fā)
//pinch/rotate/long press/pan
view.addGestureRecognizer
2.自定義控件
1.展示性控件,可以通過幾個控件組合(目前)
2.Target-Action
2.1 使用UIContr 和 UIResponder,控件被觸摸時觸發(fā)控件內部的事件
2.2 當控制控件的關鍵值改變時候,應該在didSet里面調用NeedsLayout()去重新布局(使控件界面改變)
2.3 選擇適當的時機,發(fā)送相對應的控件控制事件的動作sendActionsForControlEvents
例如switch開關,當觸摸控件的是,在BeginXXX()中調用改變控件顏色的方法,并且發(fā)送action給相對應的控制事件
action在外部使用addTargetAction添加,控制事件要相同(例如valueChanged)
2.4 完善一些控件的值改變的安全控制