我試圖創建自定義UICollectionViewCell
,其中包含幾個屬性,並取決於繪製組件內部單元的屬性的值。我使用dequeueReusableCellWithReuseIdentifier
來創建單元格,然後我設置一些屬性,並在最後調用layoutIfNeeded
函數,這個函數在我的自定義單元格內被覆蓋。重寫功能是設置單元格的某些屬性,例如BOOL屬性設置爲YES,刷新單元格後(在集合視圖上調用reloadData
)函數layoutIfNeeded
被再次調用。當我嘗試閱讀我設置爲YES的BOOL屬性時,我總是得到默認值,這是我第一次撥打reloadData
時的NO。當我第二次撥打reloadData
時,屬性設置爲YES。任何想法我做錯了什麼?這裏是代碼我使用:UICollectionViewCell未正確設置屬性
按鈕點擊我打電話:
[myCollectionView reloadData];
方法cellForItemAtIndexPath
樣子:
MyCustomCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"myCustomCell" forIndexPath: indexPath];
cell.device = [collectionArray objectAtIndex:indexPath.row];
[cell layoutIfNeeded];
return cell;
而且裏面MyCustomCollectionCell.m
-(void)layoutIfNeeded{
NSLog(@"bool prop: %d",changedStatus);
changedStatus = YES;
}
的layoutIfNeeded
代碼BOOL屬性在中定義:
@property (nonatomic, assign)BOOL changedStatus;
UPDATE:
我很抱歉,我在我的崗位上做出了一個錯誤。我不喜歡收集reloadData
,但與reloadItemsAtIndexPaths
;這個調用會導致我的自定義單元格的init方法再次被調用(不僅僅是當收集視圖第一次被加載時),並且在那之後調用它的方法layoutIfNeeded
。我的問題是單元格沒有被重用,但是再次創建,導致所有屬性消失。任何想法如何解決這個問題?
您可以指定在(與調用'-reloadData')你在讀'changedStatus'? – 2015-03-13 13:31:39
'reloadData'在'viewController'類中被調用,'changedStatus'被設置並被打印在'MyCustomCollectionCell'裏面。首先在'layoutIfNeeded'方法中調用'reloadData',然後調用'cellForItemAtIndexPath'方法,在'layoutIfNeeded'裏面調用'changedStatus'方法,然後設置新的值。 – AleksandarNS 2015-03-13 13:36:42
兄弟我剛剛創建了一個空白項目並複製你的代碼並粘貼到我的項目中。只是在@implementation之後添加了一行。合成changedStatus。並且工作得很好。不知道爲什麼,但工作。 – 2015-03-13 13:40:44