Tôi có UICollectionView
và tôi đang cố gắng đặt hình nền bằng thuộc tính backgroundView dựa trên nếu có bất kỳ dữ liệu nào trong CollectionView hay không. Tôi có điều hướng sẽ thay đổi dữ liệu và tải lại chế độ xem bộ sưu tập (gọi số [self.collectionView reloadData]
). Vì một số lý do tôi nhận được kết quả rất lạ. Thứ nhất, đôi khi tôi đặt thuộc tính nó xuất hiện trên đầu trang của các ô collectionView và che khuất chúng. Thứ hai khi tôi cố gắng thay đổi thuộc tính, nó không thay đổi trên màn hình. Đây là lái xe cho tôi hạt! Nó có vẻ như một điều đơn giản để thực hiện!Không thể thay đổi thuộc tính backgroundView trên UICollectionView
Vì vậy, trong Mã. Trong viewDidLoad
cho UICollectionViewController
- (void)viewDidLoad {
[self loadSections];
[self setupBackgroundView;
}
Phương pháp phần tải chỉ tải dữ liệu tôi đang sử dụng cho xem bộ sưu tập, mà sau đó cũng kêu gọi một phương pháp để thiết lập các quan điểm nền mà quyết định những gì xem thêm dựa trên nếu có bất kỳ dữ liệu như sau:
- (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;
}
}
Bây giờ khi xem tải đầu tiên, nếu không có dữ liệu và do đó không có các tế bào để hiển thị các hình ảnh nền đi lên một cách chính xác. Sau đó tôi thay đổi dữ liệu và bây giờ tôi có một số ô để hiển thị, setupBackgroundImage được gọi và tôi có thể xác minh rằng thuộc tính backgroundImage được đặt thành nil (tôi thậm chí đã bị ngắt ở đây và đã kiểm tra giá trị và không phải là nil). NHƯNG hình nền vẫn hiển thị.
Ngoài ra nếu tôi thay đổi hình ảnh khác thành hình ảnh mới này sẽ không bao giờ được hiển thị.
Và thậm chí còn kỳ lạ hơn. Nếu tôi có một số ô được hiển thị và đặt hình nền thì hình ảnh này được hiển thị gọn gàng phía sau các ô. Nếu sau đó tôi tải lạiData bằng một tập dữ liệu mới, thì hình ảnh được hiển thị ở phía trước các ô, che khuất chúng. Tôi không có ý tưởng làm thế nào điều này xảy ra như sau đó xem nền nên được đằng sau tất cả những người khác.
Có ai biết tại sao điều này xảy ra không. Là nó nhận được lưu trữ ở bất cứ đâu? hay tôi chỉ làm điều gì đó ngớ ngẩn? Tôi đang mất tổng số ở đây - đã dành nhiều thời gian hơn việc viết bố cục tùy chỉnh mà nó sử dụng!
Bất kỳ cơ hội nào nhiều 'UICollectionViews' đang được tạo và thêm dưới dạng xem phụ? Điều đó sẽ giải thích hành vi bạn đang thấy. – bobnoble
Cảm ơn bạn đã bình luận bobnoble. Tôi cũng tự hỏi liệu điều này có thể xảy ra không. Theo như tôi có thể nói, từ cả hai kiểm tra thông qua mã và từ chạy công cụ phân bổ dụng cụ, sau đó không có, chỉ có một UICollectionView. – SimonB
Bất kỳ cơ hội nào thiết lập của bạnBackgroundImage đôi khi được gọi trên một chuỗi khác với chuỗi chính? – honus