[英]Pass the Parsed Data to UICollectionView
我是一名初级开发人员,因此无法解决这个非常简单的问题。
我有一个扩展了AFHTTPRequestOperationManager
的类。 意味着它是@interface apiClient : AFHTTPRequestOperationManager
在此类中,我拥有所有从Imgur API提取图像的代码,并使用AFNetworking
将数据解析到一个级别,在该级别中,我开始仅获取图像的链接。
现在, rootViewController
是UICollectionViewController
扩展。 在它的viewDidLoad
我向我的APIClient发送了一个调用,它开始从方法移动到方法,最后给了我一个NSMutableArray
,其中包含将在CollectionViewCell
的UIImageView
中使用的图像链接。
问题是我正在使用它来将最终链接发送回我的rootViewController
即GalleryCollectionViewController
GalleryCollectionViewController *gcvc = [[GalleryCollectionViewController alloc] init];
[gcvc recieveGalleryImagesLinks:galleryImgLinkArr];
问题在于,在gcvc
它会先调用numberOfItemsInSection
然后才能从API获得任何响应。 因此,这意味着计数为零,因此不显示数据。 因此,如何获取它以首先从apiClient
类获取API调用,然后再创建viewController
。 我希望我已经明确说明了我的问题,如果需要共享更多代码,我会做。
更新
授权后,此方法将获取图库图像:
- (void)galleryAlbum:(NSString *)ID {
NSLog(@"ID is %@", ID);
[self GET:[NSString stringWithFormat:@"%@3/gallery/album/%@", self.baseURL,ID] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
self.galleryData = (NSDictionary *)responseObject;
galleryDataArr = [[NSMutableArray alloc] init];
galleryDataArr = [self.galleryData valueForKey:@"data"];
galleryImagesArr = [[NSMutableArray alloc] init];
galleryImagesArr = [galleryDataArr valueForKey:@"images"];
galleryImgLinkArr = [[NSMutableArray alloc] init];
galleryImgLinkArr = [galleryImagesArr valueForKey:@"link"];
GalleryCollectionViewController *gcvc = [[GalleryCollectionViewController alloc] init];
[gcvc recieveGalleryImagesLinks:galleryImgLinkArr];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failed #2");
}];
}
在这里,gcvc接收带有图像链接的数组,然后将加载视图重新加载为:
-(void)recieveGalleryImagesLinks:(NSMutableArray *)array
{
self.imageLinks = [[NSMutableArray alloc] initWithArray:array];
NSLog(@"Array: %@",self.imageLinks);
[self.collectionView reloadData];
}
但这给出了“ UICollectionView:必须使用非nil布局参数初始化”,尽管数组不为空。
下面的代码行不正确:
GalleryCollectionViewController *gcvc = [[GalleryCollectionViewController alloc] init];
[gcvc recieveGalleryImagesLinks:galleryImgLinkArr];
您需要在此处使用块或委托方法,这会将数组传回您的collectionViewController并重新加载collecrionView。
甚至您从API类进行的方法调用对于委托方法似乎都是正确的,但使其成为协议方法。 这样,您无需进行太多更改。 如下图所示:
[self.delegate recieveGalleryImagesLinks:galleryImgLinkArr
当调用API并等待响应时,请显示activityIndicator来加载数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.