十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
由于時(shí)間的問(wèn)題,就給大家先少說(shuō)一點(diǎn)有關(guān)UITableViewCell的問(wèn)題,再說(shuō)如果寫(xiě)的越多,也許會(huì)不能消化,那么還是少來(lái)點(diǎn)吧!
創(chuàng)新互聯(lián)建站秉承實(shí)現(xiàn)全網(wǎng)價(jià)值營(yíng)銷(xiāo)的理念,以專(zhuān)業(yè)定制企業(yè)官網(wǎng),成都做網(wǎng)站、成都網(wǎng)站制作,成都微信小程序,網(wǎng)頁(yè)設(shè)計(jì)制作,成都手機(jī)網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級(jí)專(zhuān)業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對(duì)客戶(hù)都以感恩的心態(tài)奉獻(xiàn)自己的專(zhuān)業(yè)和所長(zhǎng)。
一起來(lái)看看UITableView的最重要的組成部分。
一、UITableViewCell的高亮和選中
當(dāng)我們打開(kāi)一個(gè)tableView的頁(yè)面,上面布滿(mǎn)了一個(gè)個(gè)cell,tableview允許我們通過(guò)datasource為這些
cell提供數(shù)據(jù),通過(guò)delegate來(lái)控制點(diǎn)擊cell時(shí)候如何響應(yīng)。查看UITableViewCell的幫助文檔我們可以
看到它有兩個(gè)屬性highLighted、selected。這兩者之間到底又怎么樣的聯(lián)系呢?當(dāng)我們點(diǎn)擊cell的時(shí)候
都發(fā)生了什么呢?要達(dá)到這個(gè)目的,很簡(jiǎn)單我們只要自定義一個(gè)cell繼承自UITableViewCell。
二、然后重載它的以下兩個(gè)方法
這兩個(gè)方法一個(gè)是設(shè)置cell的高亮狀態(tài),另一個(gè)是設(shè)置cell的選中狀態(tài),我們只需要在這兩個(gè)方法里面打印信息就可以看出點(diǎn)擊cell時(shí)這些狀態(tài)是怎么變化的了。
測(cè)試的程序很簡(jiǎn)單,直接重載了這兩個(gè)方法,打印設(shè)置的選中和高亮的狀態(tài)。當(dāng)我們點(diǎn)擊任何一個(gè)cell的時(shí)候,輸出如下:
我們可以看出,當(dāng)我們點(diǎn)擊cell的時(shí)候,其實(shí)是先設(shè)置cell的高亮狀態(tài)為YES,然后松手的時(shí)候再將cell
的高亮狀態(tài)設(shè)置為NO,接著才是設(shè)置cell的選中狀態(tài)為YES,最后才會(huì)去調(diào)用delegate中的
tableview:didSelectRowAtIndexPath:方法。
此處我們delegate的tableview:didSelectRowAtIndexPath:方法中只是做了打印(沒(méi)有遵照設(shè)計(jì)規(guī)范,在
該方法中取消選中),這個(gè)時(shí)候已經(jīng)有一個(gè)cell處于選中狀態(tài)時(shí),我們?cè)偃c(diǎn)擊另外一個(gè)cell時(shí),輸出如
下:
通過(guò)截圖我們可以看出,前兩布還是和第一次點(diǎn)擊cell時(shí)類(lèi)似,但是緊接著是首先設(shè)置前一個(gè)cell為非選中狀態(tài),然后在設(shè)置當(dāng)前點(diǎn)擊的cell為選中狀態(tài),最后再調(diào)用delegate的方法。為什么會(huì)先取消上一個(gè)cell的選中狀態(tài)呢?因?yàn)閠ableView默認(rèn)是不支持多選的,我們可以通過(guò)設(shè)置allowsMultipleSelection為YES來(lái)設(shè)置支持多選。
總結(jié)上面兩種情況,我們發(fā)現(xiàn)cell的高亮狀態(tài)是不能持久的,即tap的時(shí)候會(huì)變成高亮,松手的時(shí)候就會(huì)自動(dòng)設(shè)置為非高亮狀態(tài)。而cell的選中狀態(tài)則是可以持久的,我們不去觸發(fā)它改變狀態(tài),則選中狀態(tài)就不會(huì)改變。
通常cell非選中且非高亮狀態(tài)時(shí)候cell上的字體是黑色的,但是高亮或者選中狀態(tài)時(shí)我們可能希望改變字體的顏色為白色或者其他顏色,這個(gè)時(shí)候就可以通過(guò)重載這兩個(gè)方法來(lái)實(shí)現(xiàn),下面是代碼片段,如圖:
如圖所示,左邊是正常情況下,右邊是選中狀態(tài)下:
如果有說(shuō)的不對(duì)的地方,希望大家能夠給我指出來(lái),也歡迎和各位大師一起討論關(guān)于iOS開(kāi)發(fā)方面的知識(shí),還可繼續(xù)關(guān)注我,藍(lán)鷗講師——張浩!