UITableView登錄狀態(tài)和非登錄狀態(tài)cell顯示不同的布局

在沒有數(shù)據(jù)數(shù)組(數(shù)據(jù)源)的情況下,deleteRows然后insertRows這個會崩潰。

然后換了第二種辦法,把所有需要的控件都添加在cell中,在cell中增加一個對外的成員變量接口(flag),在方法內(nèi)部實(shí)現(xiàn)setFlag:方法,來設(shè)置對應(yīng)的控件隱藏或顯示。也是沒有反應(yīng)。比如非登錄狀態(tài)我想只顯示控件1和2,登錄狀態(tài)我想只顯示控件3和4.

if(flag) {

//登錄,顯示3、4,隱藏1、2

self.control3.hidden =NO;

self.control4.hidden=NO;


self.control1.hidden = YES;

self.control2.hidden=YES;

}else{

//非登錄,顯示1、2,隱藏3、4

self.control3.hidden =YES;

self.control4.hidden=YES;


self.control1.hidden=NO;

self.control2.hidden=NO;

}

然后在設(shè)置完這些后,我各個地方調(diào)用了

[self layoutSubviews];

[self layoutIfNeeded];

[self.tableView reloadData];

[self.tableViewreloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];

都沒有反應(yīng)。

考慮了一下[self.tableView reloadData];這個方法,是根據(jù)數(shù)據(jù)源,重新刷新cell上的數(shù)據(jù)。我可不可以在Controller里定義一個成員變量,記錄登錄狀態(tài)。自定義兩種cell,分別按照登錄狀態(tài)和非登錄狀態(tài)布局,然后在cellForRowAtIndexPath這個方法里判斷,如果登錄狀態(tài),返回登錄狀態(tài)的cell,如果非登錄狀態(tài),返回非登錄狀態(tài)的cell,每次刷新的tableView的時候自己判斷取哪個cell。這樣,在登錄成功要改變布局的方法里,改變登錄狀態(tài)這個成員變量,然后[self.tableView reloadData];他就會重新走cellForRowAtIndexPath,然后重新根據(jù)登錄狀態(tài)加載cell。經(jīng)過驗(yàn)證,這個方法上行得通的。代碼就不貼啦。多思考。看不懂的可以一起討論。有錯誤歡迎指出。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容