溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

iOS中tableview 兩級(jí)cell的展開(kāi)與收回的示例代碼

發(fā)布時(shí)間:2020-08-21 08:26:07 來(lái)源:腳本之家 閱讀:199 作者:J_Kang 欄目:移動(dòng)開(kāi)發(fā)

由于文章內(nèi)容的限制,我們接著在上文的內(nèi)容展開(kāi),上文的方案中還是存在一個(gè)問(wèn)題的,如果我們展開(kāi)了多個(gè)section,并且展開(kāi)的section不在屏幕上面,當(dāng)我們滑動(dòng)的時(shí)候,section再次回到屏幕的時(shí)候,展開(kāi)的圖標(biāo)就不是再往下了,如下圖所示:

iOS中tableview 兩級(jí)cell的展開(kāi)與收回的示例代碼

我們來(lái)具體的分析一下,首先考慮是復(fù)用的問(wèn)題,當(dāng)section要顯示的時(shí)候,就會(huì)從復(fù)用池里面找到ID一樣的section,然后找到了section,拿過(guò)來(lái)直接用,這里僅僅把顯示的內(nèi)容修改了一下,并沒(méi)有判斷section里面圖標(biāo)是展開(kāi)狀態(tài)還是為展開(kāi)狀態(tài)。好了,到這里我們分析出問(wèn)題的所在,那么,我們我們應(yīng)該在修改程序呢?當(dāng)section要顯示的時(shí)候,我們要判斷一下section展開(kāi)圖標(biāo)的狀態(tài),然后將它設(shè)置成正確的圖片。那么我們只要在GetViewForHeader里面添加如下的代碼

//數(shù)據(jù)重新加載的時(shí)候,展開(kāi)圖標(biāo)的重新設(shè)置 
f (Title [(int)section].ExplandFlag) { 
headerView.ExplandButton.SetImage (UIImage.FromBundle ("arrowD"), UIControlState.Normal); 
 else { 
headerView.ExplandButton.SetImage (UIImage.FromBundle ("arrow"), UIControlState.Normal); 

當(dāng)你會(huì)發(fā)現(xiàn),程序還有一些漏洞,當(dāng)你在收回一些section(這些個(gè)section是從復(fù)用池操作過(guò)來(lái)的),圖標(biāo)缺收回不過(guò)來(lái)。如下圖所示:

iOS中tableview 兩級(jí)cell的展開(kāi)與收回的示例代碼

這里又是啥原因呢?我們仔細(xì)考慮一下,是不是當(dāng)我們從復(fù)用池拿過(guò)一個(gè)section的時(shí)候,原來(lái)的按鈕是旋轉(zhuǎn)了90度,然后直接給它換了一個(gè)對(duì)應(yīng)的圖片,然后點(diǎn)擊收回的時(shí)候,按鈕帶著這個(gè)圖片又開(kāi)始旋轉(zhuǎn),所以會(huì)出現(xiàn)錯(cuò)誤。那么我們是不是在圖片旋轉(zhuǎn)要旋轉(zhuǎn)的時(shí)候,將圖片對(duì)應(yīng)的修改一下,代碼如下:

//標(biāo)志位改變 
Title[(int)section].ExplandFlag=false; 
//圖標(biāo)的復(fù)位 
UIButton explandButton=(UIButton)sender; 
explandButton.SetImage (UIImage.FromBundle ("arrow"), UIControlState.Normal); 
myTabViSource.ReturnRotate(explandButton); 
//數(shù)據(jù)插入 
int length=Title[(int)section].SecondTitle.Count; 
NSIndexPath[] arrayIndexPath=new NSIndexPath[length]; 
for(int i=0;i<length;i++) 
{ 
  arrayIndexPath[i]=NSIndexPath.FromRowSection((nint)i,section); 
} 
tableview.DeleteRows(arrayIndexPath,UITableViewRowAnimation.Automatic); 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI