2013-09-23 69 views
6

Tôi đã phát triển một ứng dụng trình đọc RSS sử dụng chế độ xem bộ sưu tập. Vấn đề của tôi là, ngay từ lần khởi động đầu tiên, ứng dụng sẽ xuất hiện trống.Làm cách nào để tự động tải lại Chế độ xem Bộ sưu tập?

Quá trình này, nguồn cấp dữ liệu RSS được lấy từ web, được lưu vào một tệp tạm thời trên thiết bị và sau đó được hiển thị qua chế độ xem bộ sưu tập.

Câu hỏi của tôi là Làm cách nào để ứng dụng tải lại dữ liệu tự động sau khi các tệp đã được tải? Để người dùng không nhìn thấy màn hình trống ban đầu.

Tôi đã thử thêm mã này

 [self.collection1 performBatchUpdates:^{ 
     [self.collection1 reloadSections:[NSIndexSet indexSetWithIndex:0]]; 
    } completion:nil]; 

Tuy nhiên nó không hoạt động cho quan điểm ban đầu.

Tôi có nên làm điều gì đó từ appdelegate không? hoặc từ bộ điều khiển chế độ xem bộ sưu tập?

Xin cho biết

Dưới đây là các mã được sử dụng để có được và hiển thị dữ liệu của tôi ....

#pragma mark - UICollectionViewDataSourceDelegate 
- (NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView 
    { 
    return 1; 
    } 

- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
{ 
return [_articleListmain count]; 
} 

- (UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
MainCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"articleCellmain" 
                      forIndexPath:indexPath]; 
NSDictionary *item = [_articleListmain objectAtIndex:indexPath.item]; 

// set the article image 
[cell.image setImageWithURL:[item objectForKey:@"image"]]; 

// set the text of title UILabel 
cell.title.text = [NSString stringWithFormat:@"%@\n\n\n\n", [item objectForKey:@"title"]]; 
cell.title.textColor = [UIColor colorWithRed:33.0f/255.0f green:74.0f/255.0f blue:146.0f/255.0f alpha:1.0f]; 

// set the text of summary UILabel 
cell.description.text = [NSString stringWithFormat:@"%@\n\n\n\n\n\n\n\n\n", [item objectForKey:@"description"]]; 


cell.targetURL.text = [NSString stringWithFormat:@"%@\n\n\n\n", [item objectForKey:@"link"]]; 

cell.category.text = [NSString stringWithFormat:@"%@\n\n\n\n", [item objectForKey:@"category"]]; 

cell.date.text = [NSString stringWithFormat:@"%@\n\n\n\n", [item objectForKey:@"pubDate"]]; 

cell.image.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"placement.png"]]; 


return cell; 


} 

Trả lời

8

Bạn sẽ có thể sử dụng [collectionView reloadData] khi bạn biết quá trình download hoàn thành.

+0

vì vậy tôi có sử dụng điều đó trong bộ điều khiển chế độ xem bộ sưu tập hoặc sau khi tôi đã phân tích xong dữ liệu. Đó là vấn đề tôi đang gặp phải. –

+0

Đã thử rằng trong chế độ xem bộ sưu tập của tôi và nhật ký cho thấy rằng nó tải lại nhưng không hiển thị thay đổi hiển thị trống –

+0

Nếu không nhìn thấy mã, tôi thực sự không biết điều gì sẽ gây ra điều này ngoài dữ liệu không có mặt tại thời điểm tải lại. Trong cellForItemAtIndexPath của bạn, bạn đã kiểm tra nguồn dữ liệu của mình (bất kể nó có thể là gì) để thấy rằng dữ liệu của bạn có ở đó không? Có lẽ bạn sẽ muốn sửa đổi bài đăng của mình để bao gồm mã cho phương thức đó. – RegularExpression

1
[self.collection1 performBatchUpdates:^{ 
[self.collection1 reloadSections:[NSIndexSet indexSetWithIndex:0]]; 
} completion:nil]; 

Cố gắng thay thế mã này với mã dưới đây

[self.collection1 performBatchUpdates:^{ 
[self.collection1 reloadData]; 
} completion:nil]; 
0

Tôi nghĩ rằng bạn chỉ cần đặt [self.collection1 reloadData] trong viewWillAppear của ViewController nơi xem bộ sưu tập của bạn được đặt.

HOẶC

Bạn có thể reloadData nó ở đâu đó ngay cả trước khi nhìn xuất hiện, giống như ngay lập tức sau khi phân tích chỉ cần đảm bảo bạn đã khởi tạo các view nơi xem bộ sưu tập nằm trước tải lại.

3

thử này

[self.collection1 performBatchUpdates:^{ 
    [collectionView reloadData] 
} completion:nil]; 

một lần tải về của bạn đã hoàn thành.