天天看點

【iOS7的一些總結】9、用清單顯示内容(上):清單視圖UITableView

清單視圖,顧名思義就是将資料的内容用清單的形式顯示在螢幕上的視圖。在ios中清單視圖以UITableView實作,這個類在實際應用中非常的頻繁,但是對于初學者來說不是非常容易了解。這裡将UITableView的主要用法總結一下以備查。

UITableView類中定義了style屬性:

每一個UITableView都可以選擇兩種style之一,即分組模式和平面模式,這兩種模式定義在枚舉變量UITableViewStyle中:

每一個清單視圖的組成都是相似的,都是由一個表頭視圖+表體+表尾視圖構成。其中表頭和表尾兩個視圖預設為nil,需要時可以建立自定義視圖添加到表頭和表尾。定義如下:

除表頭和表尾之外,表體則由一串UITableViewCell(下面簡稱cell)構成。如果是分組表視圖,則多個UITableViewCell構成一個section,每個section也有頭和尾視圖。

下面簡單建立一個demo展示一下如何建立一個UITableView。這裡假定大家都了解xcode的基本操作,是以就不再一步一步地截圖了,簡單叙述即可。不懂得可以去百度一下“xcode建立工程”。

建立一個single view application,在新生成的ViewController.m檔案中重寫loadView方法,建立一個UITableView視圖。(别忘了把alloc的視圖在dealloc函數中釋放。)

編譯運作,顯示如下圖:

【iOS7的一些總結】9、用清單顯示内容(上):清單視圖UITableView

表視圖的協定方法——這是非常重要的部分,因為我們建立一個表視圖,目的就是讓視圖可以顯示資料,否則一個空空的表視圖與廢物無二。表視圖所定義的協定方法由代理方法delegate和資料源方法data source方法組成。委托方法一般用于實作個性化處理表視圖的基本樣式(如單元格的高度等)以及捕捉單元格選中的響應;資料源方法用于完成表中的資料,如指定單元格數,以及建立每一個單元格。

要實作代理和資料源方法,首先需要讓目前視圖控制器支援UITableViewDelegate和UITableViewDataSource協定。做如下修改:

并且在tableView建立完成後,将tableView的delegate和dataSource設定為self,即委托給目前視圖控制器來控制表視圖的資料顯示和響應。

delegate和data source協定有兩個方法是必須實作的:

這兩個方法分别用于生成每一個cell,以及指定目前section共有多少行。實作這兩個方法是想要在表視圖中顯示資料必須實作的最低要求。

我們在視圖控制器頭檔案中聲明一個NSArray *model(retain屬性),并在viewDidLoad中将[UIFont familyNames]賦給這個屬性。

在視圖控制器中實作這兩個代理方法:

在cellForRowAtIndexPath方法中,首先會檢查是否有閑置的單元格,如果沒有閑置的單元格,則會建立一個cell并将其傳回。參數indexPath表示目前正在建立的單元格位于整個表視圖的第幾行。

編譯,運作,顯示結果:

【iOS7的一些總結】9、用清單顯示内容(上):清單視圖UITableView

如果希望實作對選中某個單元格的響應,隻需要實作下面代理方法即可。在代理方法中可以實作建立新的視圖控制器并控制其加載到螢幕上。

繼續閱讀