專題目錄:
第六章 創(chuàng)建一個基于Table的簡單App(一)
第六章 創(chuàng)建一個基于Table的簡單App(二)
與數(shù)據(jù)源和代理建立聯(lián)系
雖然ViewController類已經(jīng)實現(xiàn)了UITableViewDelegate和UITableViewDataSource協(xié)議,但是在storyboard中的UITableView并不知道。我們需要告知UITableView對象ViewController是數(shù)據(jù)源的代理。
回到storyboard中。選擇table view。按住control鍵,點擊table view并且拖拽它到Document Outline中的View Controller中。

釋放按鍵,在彈出的菜單中選擇“dataSource”。重復上面的步驟為“delegate”建立關聯(lián)。

為了確保正確的建立了關聯(lián),你可以再次選擇Table View。點擊工具區(qū)域的關聯(lián)查看器來顯示已經(jīng)存在的關聯(lián)?;蛘吣憧梢杂覔舯砀駚盹@示關聯(lián)。

測試你的App
好了,你已經(jīng)準備好測試你的App了。點擊“Run”按鈕然后等待仿真器加載你的App。你的App現(xiàn)在應該可以顯示一串餐館名了。
在Table?View中添加縮略圖
現(xiàn)在這個表格沒有什么特色,對不對?給它添加點圖片怎么樣?UITableView做這個非常簡單。添加縮略圖到每一行,你只需要增加一行代碼就可以了。
首先下載示例圖片 http://pan.baidu.com/s/1jHArCxg 。壓縮包里包含三個圖片文件。全部圖片都是一樣的只是分辨率不同。當開發(fā)iOS
APP時,推薦準備三個版本的圖片。使用@3x前綴的適合iPhone?6 Plus。使用@2x前綴的適合iPhone?4/4s/5/5s/6,不帶@前綴的時候非Retina顯示屏的舊設備。
Xcode工程中包含一個圖片資源目錄(例如:images.xcassets)用來管理你工程中大多數(shù)類型的圖片。要使用剛才解壓的圖片,你要選擇images.xcassets打開資源目錄。從Finder中拖出那三張圖片,并把它們拽到集合視圖(set list/viewer)中。

set view自動識別Retina和非Retina圖片。一旦圖片被放到圖片集(image set)中,你在代碼中可以通過非Retina文件名引用這些圖片。

現(xiàn)在打開ViewController.swift并且在tableView(_:cellForRowAtIndexPath:)方法里面添加下面的代碼。就在“return cell”前面添加。
cell.imageView.image = UIImage(named:“restaurant”)
UIKit框架提供UIImage類能夠從文件創(chuàng)建照片。支持多種文件格式,比如PNG,GIF和JPEG。只需要將圖片名字傳遞給UIImage類,它就能夠加載圖片。
回想一下我們使用的表單元格風格是Basic(基礎),它包含一個默認的區(qū)域來顯示圖片或者縮略圖。這行代碼通知UITableView加載圖片并且在單元格默認的圖片區(qū)域顯示。現(xiàn)在,點擊“Run”按鈕,你的SimpleTable App每一行都會顯示這張圖片。

隱藏狀態(tài)條
從iOS7開始,view?controller是滿屏顯示?,F(xiàn)在表格的內(nèi)容被狀態(tài)條遮住。這樣不好看。
一個簡單的補救方法是隱藏狀態(tài)條。你可以控制每一個view controller的顯示狀態(tài)。如果你想在某個特別的view controller里不顯示狀態(tài)條,只需簡單增加下面的代碼。

在ViewController.swift中插入這行代碼,然后再次測試App?,F(xiàn)在你可以看到屏幕的表格前沒有狀態(tài)條。
為UITableView添加自動布局約束
到現(xiàn)在為止你已經(jīng)學了不少了。你的第二個App在iPhone 5/5s上運行的很好。你是否嘗試過在iPhone 4s(3.5英寸)上運行或者將設備旋轉為橫屏。如果沒有試過,你可以嘗試一下。

在3.5英寸屏上表格沒法全部顯示。在橫屏模式下同樣如此。你現(xiàn)在肯定會想到,我們要使用自動布局(Auto Layout),這樣表格就能適應不同的屏幕尺寸了。

轉到storyboard并且選擇table view。在自動布局菜單,點擊Pin按鈕打開Pin工具菜單。選擇每一條紅色的虛線。一旦被選中紅色的虛線會變成實線。點擊“Add 4 Constraints”按鈕添加約束。這里我們?yōu)閁ITableview四周添加4條約束。特別的,我們想確保UITableView的底邊不會超出布局推薦的底邊。如果你在Document Outline中展開約束信息,可以看到兩條水平空間約束和兩條垂直空間約束。兩條水平空間約束確保表格的左邊和右邊伸展到view controller邊緣。垂直約束用來解決3.5英寸屏幕的問題。UITableView現(xiàn)在對齊自動布局推薦的底邊。換句話說,你的表格將會自動調(diào)整大小來適應小的屏幕。
很酷吧。你現(xiàn)在可以再次測試App了?,F(xiàn)在你的APP無論在什么屏幕尺寸還是方向上都完美適應。
你的練習
迄今為止展示的APP為所有的單元格顯示一個固定的圖片。你可以嘗試修改App讓它每個單元格顯示不同的圖片。
小結
Table view是iOS編程中使用最普遍的元素之一。如果你徹底理解了細節(jié)并且自己編寫了App,你應該很好的掌握了如何創(chuàng)建你自己的table view。我試著把demo App中的所有事情都盡力簡化。在真實的App中,表格的數(shù)據(jù)一般不是“硬編碼”。通常數(shù)據(jù)從文件,數(shù)據(jù)庫或者其他地方加載。隨著不斷深入我們會慢慢介紹。同時,必須確保你已經(jīng)完全理解了table view是如何工作的。否則你需要回到章節(jié)開頭并且重新學習。