您好,登錄后才能下訂單哦!
由于時間的問題,就給大家先少說一點有關UITableViewCell的問題,再說如果寫的越多,也許會不能消化,那么還是少來點吧!
一起來看看UITableView的最重要的組成部分。
一、UITableViewCell的高亮和選中
當我們打開一個tableView的頁面,上面布滿了一個個cell,tableview允許我們通過datasource為這些
cell提供數據,通過delegate來控制點擊cell時候如何響應。查看UITableViewCell的幫助文檔我們可以
看到它有兩個屬性highLighted、selected。這兩者之間到底又怎么樣的聯系呢?當我們點擊cell的時候
都發生了什么呢?要達到這個目的,很簡單我們只要自定義一個cell繼承自UITableViewCell。
二、然后重載它的以下兩個方法
這兩個方法一個是設置cell的高亮狀態,另一個是設置cell的選中狀態,我們只需要在這兩個方法里面打印信息就可以看出點擊cell時這些狀態是怎么變化的了。
測試的程序很簡單,直接重載了這兩個方法,打印設置的選中和高亮的狀態。當我們點擊任何一個cell的時候,輸出如下:
我們可以看出,當我們點擊cell的時候,其實是先設置cell的高亮狀態為YES,然后松手的時候再將cell
的高亮狀態設置為NO,接著才是設置cell的選中狀態為YES,最后才會去調用delegate中的
tableview:didSelectRowAtIndexPath:方法。
此處我們delegate的tableview:didSelectRowAtIndexPath:方法中只是做了打印(沒有遵照設計規范,在
該方法中取消選中),這個時候已經有一個cell處于選中狀態時,我們再去點擊另外一個cell時,輸出如
下:
通過截圖我們可以看出,前兩布還是和第一次點擊cell時類似,但是緊接著是首先設置前一個cell為非選中狀態,然后在設置當前點擊的cell為選中狀態,最后再調用delegate的方法。為什么會先取消上一個cell的選中狀態呢?因為tableView默認是不支持多選的,我們可以通過設置allowsMultipleSelection為YES來設置支持多選。
總結上面兩種情況,我們發現cell的高亮狀態是不能持久的,即tap的時候會變成高亮,松手的時候就會自動設置為非高亮狀態。而cell的選中狀態則是可以持久的,我們不去觸發它改變狀態,則選中狀態就不會改變。
通常cell非選中且非高亮狀態時候cell上的字體是黑色的,但是高亮或者選中狀態時我們可能希望改變字體的顏色為白色或者其他顏色,這個時候就可以通過重載這兩個方法來實現,下面是代碼片段,如圖:
如圖所示,左邊是正常情況下,右邊是選中狀態下:
如果有說的不對的地方,希望大家能夠給我指出來,也歡迎和各位大師一起討論關于iOS開發方面的知識,還可繼續關注我,藍鷗講師——張浩!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。