Ios 在集合视图上显示JSON解析
我试图显示从Web服务解析的图像,但我的图像不显示。我意识到在视图加载后,图像被添加到数组中。那么,Hhw我可以在集合视图上显示图像吗?更好的是,哪一行代码应该在主线程之外执行,以便加载图像?谢谢你的帮助Ios 在集合视图上显示JSON解析,ios,json,parsing,uicollectionview,Ios,Json,Parsing,Uicollectionview,我试图显示从Web服务解析的图像,但我的图像不显示。我意识到在视图加载后,图像被添加到数组中。那么,Hhw我可以在集合视图上显示图像吗?更好的是,哪一行代码应该在主线程之外执行,以便加载图像?谢谢你的帮助 #import "ShowImagesCollectionViewController.h" #import "ImageCell.h" @interface ShowImagesCollectionViewController (){ NSMutableArray *arra
#import "ShowImagesCollectionViewController.h"
#import "ImageCell.h"
@interface ShowImagesCollectionViewController (){
NSMutableArray *array;
}
@property(nonatomic, strong)NSURLConnection *connection;
@property(nonatomic, strong)NSMutableData *webdata;
@end
@implementation ShowImagesCollectionViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self getData];
array = [[NSMutableArray alloc]initWith];
[_collectionView reloadData];
}
-(void)getData
{
[_activyIndicator startAnimating];
NSURL *url = [NSURL URLWithString:@"WEBSITE"];
NSURLRequest *requestURL = [NSURLRequest requestWithURL:url];
_connection = [NSURLConnection connectionWithRequest:requestURL delegate:self];
if (_connection) {
_webdata = [[NSMutableData alloc]init];
}
}
连接
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
[_webdata setLength:0];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[_webdata appendData:data];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"Fail With error");
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[_activyIndicator startAnimating];
NSDictionary *allDataDictionary =[NSJSONSerialization JSONObjectWithData:_webdata options:kNilOptions error:nil];
NSDictionary *currentShowDictionary = [allDataDictionary objectForKey:@"Current_Show"];
NSArray *photoArray =[currentShowDictionary objectForKey:@"Photos"];
for (NSDictionary *diction in photoArray) {
NSDictionary *photo_urlDictionary = [diction objectForKey:@"photo_url"];
// NSLog(@"%@",photo_urlDictionary);
NSURL *collectionURL = [NSURL URLWithString:[photo_urlDictionary objectForKey:@"url"]];
NSData *colectionImageData = [NSData dataWithContentsOfURL:collectionURL];
UIImage *collectionImage = [UIImage imageWithData:colectionImageData];
[array addObject:collectionImage];
NSLog(@"%@",array);
}
[_activyIndicator stopAnimating];
}
收藏视图
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return [array count];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
ImageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"pictureCell" forIndexPath:indexPath];
NSString *myImageString = [array objectAtIndex:indexPath.row];
cell.pictureImageView.image = [UIImage imageNamed:myImageString];
return cell;
}
当视图加载时,您正在调用
[\u collectionView reloadData]
,但当图像的异步加载完成时,不会再次调用。如果您在-(void)connectiondFinishLoading:(NSURLConnection*)连接的末尾进行此调用,则应该可以执行此操作。您是否尝试在-(void)connectiondFinishLoading:(NSURLConnection*)连接的末尾调用[\u collectionView reloadData]。就这样!谢谢,很高兴它成功了!我把它放在了答案栏,因为看起来你们都准备好了。