斯坦福iOS7公開課11筆記及演示Demo&訪問HTTPS鏈接下載數(shù)據(jù)
這一節(jié)主要介紹UITableView以及iPad,Demo為從Flicker下載圖片并顯示,但是實際過程中發(fā)現(xiàn)需要FQ并使用HTTPS連接,所以這次用了兩個Demo,一個是課程中的Demo,另一個是簡化的。
***調(diào)試過程中還找到Xcode中觀察變量的一個小技巧。
一.UITableView
UITableView是iOS中最常用的表視圖,通訊錄中的聯(lián)系人、手機設置里的每一個選項都是表視圖中的一個單元格cell,微信、微博每一條記錄其實也是一個cell,只不過是組成要素更多一些而已。
(1)兩個重要的協(xié)議
UITableViewDataSource和UITableViewDelegate是UITableView里兩個重要的協(xié)議(可以把協(xié)議理解成接口),前者用來實現(xiàn)單元格數(shù)據(jù)源的控制,包括兩個必須實現(xiàn)的:指定單元格cell數(shù)量以及分組數(shù)量,其他諸如刪除、移動等操作也是通過實現(xiàn)這個協(xié)議里的方法來使用。
&;&; UITableViewDelegate,這個協(xié)議提供用戶與UITableView交互操作的一系列方法,比如最常用的點擊單元格的響應方法
(2)cell的復用
為了節(jié)約資源,iOS會對cell進行復用,單獨有一個地方存放移出屏幕的cell,當向上滑動UITableView時,如果隊列中有可復用的cell,就可以直接取出使用,需要注意的是,這里的復用有一個限制條件,即cell的樣式都相同。
二.iPad特有控件
iPad中有兩種常用UI控件,彈出窗口UIPopoverController和目錄-內(nèi)容組合控件UISplitViewController,本次 課程介紹了后者,UISplitViewController由兩個視圖組成,一個是目錄視圖master,一個是內(nèi)容視圖detail,Demo就是通 過master中使用UITableView顯示圖片名稱,點擊后在內(nèi)容視圖detail里加載對應圖片。
這里有兩點值得注意:
(1)根據(jù)UISplitViewController為iPad獨有控件直接判斷設備是iPhone還是 iPad,UISplitViewController默認0是master目錄視圖,1是detail內(nèi)容視圖,使用 UISplitViewController下,如果獲取不到內(nèi)容視圖,設備就是iPhone,反之iPad。
(2)UISplitViewController協(xié)議里提供了方法來解決橫豎屏時master視圖是否顯示的問題 ,需要注意的是,UISplitViewControllerDelegate很特殊,需要在viewDidLoad之前設置
三.Demo過程問題總結(jié)
Flicker目前被墻,所以需要FQ訪問,注冊申請API的key即可,驗證發(fā)現(xiàn)只能通過HTTPS訪問,所以對FilckerFetcher里的地址都修改成HTTPS
下載得到的數(shù)據(jù)一直為nil,報錯也是提示數(shù)據(jù)空,檢查發(fā)現(xiàn),請求HTTPS連接時不能使用+dataWithContentsOfURL:這個方法,因為無法設置安全驗證相關,而請求HTTPS連接是必須對安全驗證進行設置的,否則請求失敗,所以得不到數(shù)據(jù)。
;參考:http://stackoverflow.com/questions/14013307/datawithcontentsofurl-ios-https-self-signed-certificate
這里使用了NSURLConnection的委托方法,來使客戶端忽略證書驗證
參考:http://www.cnblogs.com/stan0714/archive/2012/03/21/2409872.html
還有其它方法,沒有進行嘗試,這種方法據(jù)說是蘋果不允許的,提交應用時會有問題。
還遇到一個問題就是獲取圖片數(shù)據(jù)時報錯,這是因為圖片接收不完全,現(xiàn)象圖片在屏幕上顯示一小部分立即消失,原因是之前只接受了部分數(shù)據(jù)就馬上轉(zhuǎn)化圖片,并通知主線程更新UI
實際上應該數(shù)據(jù)接收完全后再做后續(xù)操作,因為數(shù)據(jù)可能需要多次才傳輸完全。
同樣問題后來也出現(xiàn)在獲取圖片列表的json數(shù)據(jù)時(只是當時恰好數(shù)據(jù)一次就獲取完全過,沒注意處理)
四.調(diào)試小技巧
用鼠標選中變量或者下方觀察變量都可以,但有時始終覺得不方便,斷點調(diào)試時可以在輸出窗口輸入“po 變量名”來觀察變量賦值情況
目前完整版Demo點擊單元格還有bug,歡迎解決后告知原因,若有更新也會及時補充。
簡化版Demo下載 完整版Demo下載
本文鏈接:http://www.cnblogs.com/colinhou/p/3952799.html