iOS培訓教程——UITableViewCell的高亮和選中

因爲時間的問題,就給你們先少說一點有關UITableViewCell的問題,再說若是寫的越多,也許會不能消化,那麼仍是少來點吧!ide

一塊兒來看看UITableView的最重要的組成部分。測試

1、UITableViewCell的高亮和選中字體

當咱們打開一個tableView的頁面,上面佈滿了一個個cell,tableview容許咱們經過datasource爲這些設計

cell提供數據,經過delegate來控制點擊cell時候如何響應。查看UITableViewCell的幫助文檔咱們能夠blog

看到它有兩個屬性highLighted、selected。這二者之間到底又怎麼樣的聯繫呢?當咱們點擊cell的時候繼承

都發生了什麼呢?要達到這個目的,很簡單咱們只要自定義一個cell繼承自UITableViewCell。ip

2、而後重載它的如下兩個方法開發

154205167.jpg

這兩個方法一個是設置cell的高亮狀態,另外一個是設置cell的選中狀態,咱們只須要在這兩個方法裏面打印信息就能夠看出點擊cell時這些狀態是怎麼變化的了。文檔

測試的程序很簡單,直接重載了這兩個方法,打印設置的選中和高亮的狀態。當咱們點擊任何一個cell的時候,輸出以下:get

154227543.jpg

咱們能夠看出,當咱們點擊cell的時候,實際上是先設置cell的高亮狀態爲YES,而後鬆手的時候再將cell

的高亮狀態設置爲NO,接着纔是設置cell的選中狀態爲YES,最後纔會去調用delegate中的

tableview:didSelectRowAtIndexPath:方法。

此處咱們delegate的tableview:didSelectRowAtIndexPath:方法中只是作了打印(沒有遵守設計規範,在

該方法中取消選中),這個時候已經有一個cell處於選中狀態時,咱們再去點擊另一個cell時,輸出如

下:

154247847.jpg

經過截圖咱們能夠看出,前兩布仍是和第一次點擊cell時相似,可是緊接着是首先設置前一個cell爲非選中狀態,而後在設置當前點擊的cell爲選中狀態,最後再調用delegate的方法。爲何會先取消上一個cell的選中狀態呢?由於tableView默認是不支持多選的,咱們能夠經過設置allowsMultipleSelection爲YES來設置支持多選。

總結上面兩種狀況,咱們發現cell的高亮狀態是不能持久的,即tap的時候會變成高亮,鬆手的時候就會自動設置爲非高亮狀態。而cell的選中狀態則是能夠持久的,咱們不去觸發它改變狀態,則選中狀態就不會改變。

一般cell非選中且非高亮狀態時候cell上的字體是黑色的,可是高亮或者選中狀態時咱們可能但願改變字體的顏色爲白色或者其餘顏色,這個時候就能夠經過重載這兩個方法來實現,下面是代碼片斷,如圖:

154326844.jpg

如圖所示,左邊是正常狀況下,右邊是選中狀態下:

154345563.jpg

若是有說的不對的地方,但願你們可以給我指出來,也歡迎和各位大師一塊兒討論關於iOS開發方面的知識,還可繼續關注我,藍鷗講師——張浩!

相關文章
相關標籤/搜索