国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

斯坦福iOS7公開(kāi)課11筆記及演示Demo&訪問(wèn)HTTPS鏈接下載數(shù)據(jù)

2019-11-14 20:04:37
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

    這一節(jié)主要介紹UITableView以及ipad,Demo為從Flicker下載圖片并顯示,但是實(shí)際過(guò)程中發(fā)現(xiàn)需要FQ并使用HTTPS連接,所以這次用了兩個(gè)Demo,一個(gè)是課程中的Demo,另一個(gè)是簡(jiǎn)化的。

   最后調(diào)試過(guò)程中還找到Xcode中觀察變量的一個(gè)小技巧。

1.UITableView

    UITableView是iOS中最常用的表視圖,通訊錄中的聯(lián)系人、手機(jī)設(shè)置里的每一個(gè)選項(xiàng)都是表視圖中的一個(gè)單元格cell,微信、微博每一條記錄其實(shí)也是一個(gè)cell,只不過(guò)是組成要素更多一些而已。

   (1)兩個(gè)重要的協(xié)議

          UITableViewDataSource和UITableViewDelegate是UITableView里兩個(gè)重要的協(xié)議(可以把協(xié)議理解成接口),前者用來(lái)實(shí)現(xiàn)單元格數(shù)據(jù)源的控制,包括兩個(gè)必須實(shí)現(xiàn)的:指定單元格cell數(shù)量以及分組數(shù)量,其他諸如刪除、移動(dòng)等操作也是通過(guò)實(shí)現(xiàn)這個(gè)協(xié)議里的方法來(lái)使用。

     

     

     UITableViewDelegate,這個(gè)協(xié)議提供用戶(hù)與UITableView交互操作的一系列方法,比如最常用的點(diǎn)擊單元格的響應(yīng)方法。

         

   (2)cell的復(fù)用

      為了節(jié)約資源,iOS會(huì)對(duì)cell進(jìn)行復(fù)用,單獨(dú)有一個(gè)地方存放移出屏幕的cell,當(dāng)向上滑動(dòng)UITableView時(shí),如果隊(duì)列中有可復(fù)用的cell,就可以直接取出使用,需要注意的是,這里的復(fù)用有一個(gè)限制條件,即cell的樣式都相同。

2.iPad特有控件

    iPad中有兩種常用UI控件,彈出窗口UIPopoverController和目錄-內(nèi)容組合控件UISplitViewController,本次課程介紹了后者,UISplitViewController由兩個(gè)視圖組成,一個(gè)是目錄視圖master,一個(gè)是內(nèi)容視圖detail,Demo就是通過(guò)master中使用UITableView顯示圖片名稱(chēng),點(diǎn)擊后在內(nèi)容視圖detail里加載對(duì)應(yīng)圖片。

   這里有兩點(diǎn)值得注意:

   (1)根據(jù)UISplitViewController為iPad獨(dú)有控件直接判斷設(shè)備是iPhone還是iPad,UISplitViewController默認(rèn)0是master目錄視圖,1是detail內(nèi)容視圖,使用UISplitViewController下,如果獲取不到內(nèi)容視圖,設(shè)備就是iPhone,反之iPad。

         

   (2)UISplitViewController協(xié)議里提供了方法來(lái)解決橫豎屏?xí)rmaster視圖是否顯示的問(wèn)題 ,需要注意的是,UISplitViewControllerDelegate很特殊,需要在viewDidLoad之前設(shè)置

      

3.Demo過(guò)程問(wèn)題總結(jié)

          Flicker目前被墻,所以需要FQ訪問(wèn),注冊(cè)申請(qǐng)API的key即可,驗(yàn)證發(fā)現(xiàn)只能通過(guò)HTTPS訪問(wèn),所以對(duì)FilckerFetcher里的地址都修改成HTTPS

       

      

      下載得到的數(shù)據(jù)一直為nil,報(bào)錯(cuò)也是提示數(shù)據(jù)空,檢查發(fā)現(xiàn),請(qǐng)求HTTPS連接時(shí)不能使用+dataWithContentsOfURL:這個(gè)方法,因?yàn)闊o(wú)法設(shè)置安全驗(yàn)證相關(guān),而請(qǐng)求HTTPS連接是必須對(duì)安全驗(yàn)證進(jìn)行設(shè)置的,否則請(qǐng)求失敗,所以得不到數(shù)據(jù)。

      參考:http://stackoverflow.com/questions/14013307/datawithcontentsofurl-ios-https-self-signed-certificate

      這里使用了NSURLConnection的委托方法,來(lái)使客戶(hù)端忽略證書(shū)驗(yàn)證

      參考:http://m.survivalescaperooms.com/stan0714/archive/2012/03/21/2409872.html

           

     還有其它方法,沒(méi)有進(jìn)行嘗試,這種方法據(jù)說(shuō)是蘋(píng)果不允許的,提交應(yīng)用時(shí)會(huì)有問(wèn)題。

     http://stackoverflow.com/questions/19394628/cant-receive-json-request-via-https-due-to-untrusted-certificate

      還遇到一個(gè)問(wèn)題就是獲取圖片數(shù)據(jù)時(shí)報(bào)錯(cuò),這是因?yàn)閳D片接收不完全,現(xiàn)象圖片在屏幕上顯示一小部分立即消失,原因是之前只接受了部分?jǐn)?shù)據(jù)就馬上轉(zhuǎn)化圖片,并通知主線程更新UI

      

     實(shí)際上應(yīng)該數(shù)據(jù)接收完全后再做后續(xù)操作,因?yàn)閿?shù)據(jù)可能需要多次才傳輸完全。

     同樣問(wèn)題后來(lái)也出現(xiàn)在獲取圖片列表的json數(shù)據(jù)時(shí)(之前調(diào)試時(shí)數(shù)據(jù)恰好一次就獲取完全,沒(méi)注意處理)

     

4.調(diào)試小技巧

     用鼠標(biāo)選中變量或者下方觀察變量都可以,但有時(shí)始終覺(jué)得不方便,斷點(diǎn)調(diào)試時(shí)可以在輸出窗口輸入“po 變量名”來(lái)觀察變量賦值情況

     

    Demo效果:

    目前完整版Demo點(diǎn)擊單元格還有bug,即第一次點(diǎn)擊列表正常,第二次點(diǎn)擊沒(méi)有響應(yīng),"didSelectRowAtIndexPath"方法也沒(méi)有進(jìn)入。盼高手指點(diǎn),若有更新也會(huì)及時(shí)補(bǔ)充。

    

    簡(jiǎn)化版Demo下載    完整版Demo下載

        


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鲁甸县| 潼南县| 沙田区| 辽宁省| 岢岚县| 大城县| 潮安县| 东海县| 化州市| 德钦县| 泌阳县| 曲周县| 富阳市| 江西省| 吴桥县| 收藏| 陇南市| 旺苍县| 宜黄县| 新密市| 闽清县| 鲁甸县| 陆良县| 壶关县| 南平市| 桂平市| 斗六市| 阳曲县| 朝阳市| 泰州市| 宁都县| 巴中市| 耒阳市| 通江县| 桐乡市| 革吉县| 乌兰察布市| 怀来县| 普洱| 通道| 棋牌|