繁体   English   中英

将解析的数据传递给UICollectionView

[英]Pass the Parsed Data to UICollectionView

我是一名初级开发人员,因此无法解决这个非常简单的问题。
我有一个扩展了AFHTTPRequestOperationManager的类。 意味着它是@interface apiClient : AFHTTPRequestOperationManager在此类中,我拥有所有从Imgur API提取图像的代码,并使用AFNetworking将数据解析到一个级别,在该级别中,我开始仅获取图像的链接。
现在, rootViewControllerUICollectionViewController扩展。 在它的viewDidLoad我向我的APIClient发送了一个调用,它开始从方法移动到方法,最后给了我一个NSMutableArray ,其中包含将在CollectionViewCellUIImageView中使用的图像链接。
问题是我正在使用它来将最终链接发送回我的rootViewControllerGalleryCollectionViewController

 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并等待响应时,请显示activityIndi​​cator来加载数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM