CollectionViewにUICollectionView
データがあるかどうかに基づいて、backgroundView プロパティを使用して背景画像を設定しようとしています。データを変更するナビゲーションがあり、コレクション ビューをリロードします (を呼び出します[self.collectionView reloadData]
)。何らかの理由で、非常に奇妙な結果が得られます。まず、プロパティを設定すると、collectionView セルの上に表示され、それらが隠されることがあります。次に、プロパティを変更しようとしても、画面上で変更されません。これは私を夢中にさせています!実装するのはとても簡単なことのように思えました。
だからコードで。viewDidLoad
のためにUICollectionViewController
- (void)viewDidLoad {
[self loadSections];
[self setupBackgroundView;
}
セクションのロード メソッドは、コレクション ビューに使用しているデータをロードするだけで、以下のようなデータがあるかどうかに基づいて追加するビューを決定するバックグラウンド ビューを設定するメソッドも呼び出します。
- (void)loadSections {
[self loadPictures];
[self setupBackgroundImage];
}
- (void)setupBackgroundImage {
if ([self.sections count] == 0 || !self.sections) {
self.collectionView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TakePhoto"]];
}
else {
self.collectionView.backgroundView = nil;
}
}
ビューが最初にロードされたときに、データがなく、背景を表示するセルがない場合、画像が正しく表示されます。次にデータを変更すると、表示するセルがいくつかあります。setupBackgroundImage が呼び出され、backgroundImage プロパティが nil に設定されていることを確認できます (ここでブレークポイントを設定して値を確認したところ、nil でした)。しかし、背景画像はまだ表示されています。
さらに、nil を別の画像に変更すると、この新しい画像は表示されません。
そしてさらに奇妙な。いくつかのセルを表示して背景画像を設定すると、この画像はセルの後ろにきれいに表示されます。次に、新しいデータ セットで reloadData を実行すると、画像がセルの前に表示され、セルが見えなくなります。背景ビューが他のすべてのビューの背後にある必要があるため、これがどのように発生するのかわかりません。
なぜこれが起こっているのか誰にも分かりません。どこかにキャッシュされていますか?それとも私は何かばかげたことをしていますか?私はここで完全に途方に暮れています-使用するカスタムレイアウトを書くよりも、これに多くの時間を費やしました!