我是一名初级开发人员,我很困惑这个非常简单的事情,我无法弄明白。
我有一个AFHTTPRequestOperationManager
扩展的课程。这意味着它是@interface apiClient : AFHTTPRequestOperationManager
在这个类中,我所有的代码都是从Imgur API获取图像并使用AFNetworking
我将数据解析到一个级别,我开始只获取图像的链接。< br />现在rootViewController
扩展了UICollectionViewController
。在它的viewDidLoad
我发送了一个呼叫到我的APIClient,它开始从方法转移到方法,最后给我一个NSMutableArray
,其中包含我将在我的UIImageView
中使用的图像链接CollectionViewCell
。
问题我正在使用此功能将最终链接发送回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正在接收带有images链接的数组,然后将集合视图重新加载为:
-(void)recieveGalleryImagesLinks:(NSMutableArray *)array
{
self.imageLinks = [[NSMutableArray alloc] initWithArray:array];
NSLog(@"Array: %@",self.imageLinks);
[self.collectionView reloadData];
}
但是它给出了“UICollectionView:必须用非零布局参数初始化”,尽管数组不是空的。
答案 0 :(得分:0)
以下这行代码不正确:
function make_thumb($image_path, $thumb_path, $thumb_width) {
$src_img = imagecreatefromjpeg("$image_path");
$origw=imagesx($src_img);
$origh=imagesy($src_img);
$new_w = $thumb_width;
$diff=$origw/$new_w;
$new_h=$new_w;
$dst_img = imagecreatetruecolor($new_w,$new_h);
imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));
imagejpeg($dst_img, "$thumb_path");
RETURN TRUE;
}
你需要在这里使用一个块或委托方法,它会将数组传回给你的collectionViewController并重新加载collecrionView。
即使是来自API类的方法调用似乎对委托方法也是正确的,但要使其成为一种协议方法。这样你就不需要做太多改变。它将如下所示:
GalleryCollectionViewController *gcvc = [[GalleryCollectionViewController alloc] init];
[gcvc recieveGalleryImagesLinks:galleryImgLinkArr];
什么时候调用API并等待响应显示activityIndicator来加载数据。