UITableView登錄狀態和非登錄狀態cell顯示不同的布局

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

然后換了第二種辦法,把所有需要的控件都添加在cell中,在cell中增加一個對外的成員變量接口(flag),在方法內部實現setFlag:方法,來設置對應的控件隱藏或顯示。也是沒有反應。比如非登錄狀態我想只顯示控件1和2,登錄狀態我想只顯示控件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;

}

然后在設置完這些后,我各個地方調用了

[self layoutSubviews];

[self layoutIfNeeded];

[self.tableView reloadData];

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

都沒有反應。

考慮了一下[self.tableView reloadData];這個方法,是根據數據源,重新刷新cell上的數據。我可不可以在Controller里定義一個成員變量,記錄登錄狀態。自定義兩種cell,分別按照登錄狀態和非登錄狀態布局,然后在cellForRowAtIndexPath這個方法里判斷,如果登錄狀態,返回登錄狀態的cell,如果非登錄狀態,返回非登錄狀態的cell,每次刷新的tableView的時候自己判斷取哪個cell。這樣,在登錄成功要改變布局的方法里,改變登錄狀態這個成員變量,然后[self.tableView reloadData];他就會重新走cellForRowAtIndexPath,然后重新根據登錄狀態加載cell。經過驗證,這個方法上行得通的。代碼就不貼啦。多思考??床欢目梢砸黄鹩懻摗S绣e誤歡迎指出。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容