說起tableview 大家都很熟悉吧驶赏,項目當中用的最多的也是這個控件了,那么 reloadData 也肯定不陌生了既鞠,有些時候在做一些評論頁面或者類似朋友圈的時候煤傍,會遇到因為內(nèi)容過長,不全部顯示所有內(nèi)容嘱蛋,那么想要查看全部內(nèi)容就需要點擊查看全部按鈕或進入詳情頁查看了蚯姆,
既然點擊按鈕可以查看全部內(nèi)容,應該怎么操作呢洒敏?
1:大家一定會先想到將高度緩存龄恋,reloadData直接刷新一下,顯示全部信息不就完了嗎凶伙?
答案是錯誤的郭毕,別問我問什么,問度娘去吧函荣。
2:可以選擇刷新一行數(shù)據(jù)显押,? 如下顯示,? ? ?
NSIndexPath *indexRow = [NSIndexPath indexPathForRow:0 inSection:0];
?[tableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexRow] withRowAnimation:UITableViewRowAnimationNone];
這樣操作的結(jié)果是:程序會走一遍高度方法?heightForRowAtIndexPath? 傻挂,走完這個方法程序還會繼續(xù)走?cellForRowAtIndexPath 這個方法乘碑,本來頁面已經(jīng)顯示了,所有的方法都已經(jīng)走完了金拒,再走一次cellForRowAtIndexPath兽肤,如果cell 里面控件較多的話嚴重影響用戶體驗,
3:可以采用beginUpdates 和endUpdates 方法绪抛,
[Weakself.DetailTableView beginUpdates];? ? [Weakself.DetailTableView endUpdates];
這兩個方法是組合使用资铡,只能寫在一起,分開寫就不管用了幢码,使用這個方法笤休,程序只會走heightForRowAtIndexPath 這一個方法,就不會再走別的任何代理方法了蛤育。
重要的是這三步操作宛官,重要的是這三步操作,重要的是這三步操作瓦糕,
4: 在cellForRowAtIndexPath 方法里底洗,將應該顯示的model以及高度傳遞給cell,在cell 里面根據(jù)model控制應該如何顯示咕娄,
5:在查看全部按鈕的方法里亥揖,更改之前的約束即可,然后使用bock回調(diào)到cell 里面圣勒,beginUpdates 一下就可以了费变,
6:heightForRowAtIndexPath 在這個方法里,根據(jù)model屬性返回相應高度即可圣贸。
打個廣告:
歡迎加入 iOS-OC&Swift交流群?群號:529765630(順便打個廣告,我們的app名字:meetfit-約接煤)矮慕, 歡迎任何技術(shù)愛好者和iOS開發(fā)者進群交流學習 。