1. 程式人生 > >Swift UITableView 使用的簡單介紹

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資料來源和協議