1
我有一個collectionview控制器。我想重複使用它。我有兩個自定義collectionviewlayouts,每個都有自己的數據源。如何更改collectionview中的數據和佈局?
什麼步驟和順序,我可以改變佈局和數據源?
我的CollectionView控制器如下:
- (id)initWithCollectionViewLayout:(UICollectionViewLayout *)layout {
self = [super initWithCollectionViewLayout:layout];
if (self) {
self.dataSource = [[WeekDataSource alloc] init];
}
return self;
}
- (void)loadView {
[super loadView];
[self setupCollectionView];
}
- (void)setupCollectionView {
self.collectionView = [[CalendarView alloc] initWithFrame:self.view.frame collectionViewLayout:self.collectionViewLayout];
self.collectionView.dataSource = self.dataSource;
self.collectionView.delegate = self.dataSource;
self.collectionView.backgroundColor = [UIColor whiteColor];
}
控制器顯示集合視圖就好了,用從UICollectionViewLayout
派生我的自定義佈局。
我有麻煩,正在改變佈局,以及它依賴的數據源。
我試過了,下面,但由於某種原因,collectionView堅持使用舊的collectionViewLayout。
self.dataSource = [[DayDataSource alloc] initWithScheduleNumber:0];
self.collectionView.dataSource = self.dataSource;
self.collectionView.collectionViewLayout = layout;
編輯:我已經發現,UICollectionViewController的self.collectionViewLayout
是一個只讀屬性。這是否意味着控制器不打算以這種方式重用? (通過在運行時切換佈局和數據源來重用)?我認爲它指向的是用於初始化控制器的佈局,因此視圖三角使用舊佈局的問題。