一個模型對應一個cell的高度车吹,所以把cell的高度變?yōu)槟P偷膶傩猿镌#@樣的解決更徹底,一個模型對應一個自己的屬性
把一個對象跟一個東西關聯(lián)起來窄驹,設計一對一的思路:
1.字典朝卒,可以變成key和value的關系
2.用模型屬性,可以變成對象和屬性的關系
把高度寫為模型類的屬性乐埠,然后在.h中重寫get方法抗斤,由于有了屬性就有了成員變量,所以先判斷是否為0丈咐,如果不為0瑞眼,代表存在,已經(jīng)計算過棵逊,直接if(_cellHeight) return 伤疙,如果為0,則累加歹河,累加掩浙,累加,返回秸歧,這樣就封裝到了模型類內(nèi)部
把模型對應的cell高度緩存到成員變量中去
在heightForRow方法中厨姚,根據(jù)行號從模型數(shù)組中獲取到模型后,直接返回模型對象的高度
模型數(shù)據(jù)決定高度键菱,模型數(shù)據(jù)多谬墙,高度就高,所以簡而言之经备,模型決定高度拭抬,取出模型對應的高度合情合理
默認從數(shù)組內(nèi)部取出來的是id類型,id類型的東西是不能用點語法的
所以這樣直接寫是錯的 self.topics[indexPath.row].cellHeight侵蒙,這里用到了泛型造虎,如果定義數(shù)組屬性的時候,如果不定義泛型纷闺,它里面的元素類型就是泛型算凿,里面什么都可以裝,所以這樣寫:@property(nonatomic,strong)NSMutableArray<Topic *> *topic犁功,這樣寫了之后就可以用點語法了