Swift UITableView 使用的簡單介紹
使用Swift故事板實現UITableView方式有兩種
第一種
第一步:在物件庫中拖出View Controller
第二步:新增TableView控制元件然後新增TableViewCell控制元件
樹形結構如圖所示:
第三步:新建一個繼承UIViewController的Controller檔案並於故事板中的ViewController關聯
第四步:實現UITableView的資料來源(dataSource)和代理(delegate)
UITableView需要一個數據源(dataSource)來顯示資料,UITableView會向資料來源查詢一共有多少行資料以及每一行顯示什麼資料等。沒有設定資料來源的UITableView只是個空殼。凡是遵守UITableViewDataSource協議的OC物件,都可以是UITableView的資料來源。
通常都要為UITableView設定代理物件(delegate),以便在UITableView觸發一下事件時做出相應的處理,比如選中了某一行。凡是遵守了UITableViewDelegate協議的OC物件,都可以是UITableView的代理物件。一般會讓控制器充當UITableView的dataSource和delegate
繼承UITableViewDataSource必須實現的兩個方法:
//設定tableView的資料行數 return資料來源的行數
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
//配置tableView 的單元格 return UITableViewCell
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
資料來源和代理中有很多方法上邊這兩個是必須重寫的
例如:
=======DataSource中的方法=======
//返回單元格的高
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
=======Delegate中的方法=======
//返回有多少個Sections
func numberOfSectionsInTableView(tableView: UITableView) -> Int
// 返回每一個Sections的Ttitle的高度
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
//設定每一個Section的樣子
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
第五步:讓故事板中的UITableView在Controller中關聯
第六步(容易被忽略也最重要的一步):
在viewDidLoad()方法中實現委託:mainTableView.delegate = self mainTableView.dataSource = self
凡是實現了tableview的代理協議,和資料來源協議的類都可以被一個UITableView指定成它的委託,和資料來源 ,假如你的用A類實現了上面兩個協議(協議中@request 協議方法 都要實現 ),你可以指定.tableView.delegate=(A類所建立的物件) ,只是你的這個類本身就實現了這兩個協議,所以 它可以等於self
到這簡單的UITableView實用就基本完成了
第二種(相對第一種簡單太多,但是看情景使用,有時候還必須使用第一種方式)
直接在故事板中拖出TableViewController,新建一個繼承UITableViewController的Controller,並與故事板中的TableViewController關聯。
實現下邊兩個基本方法
//設定tableView的資料行數 return資料來源的行數
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
//配置tableView 的單元格 return UITableViewCell
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
當我們按著command鍵點UITableViewController進去看的時候可以發現UITableViewController已經實現了UITableView資料來源和協議