使用AFNetworking在collectionView中附加图像

时间:2015-12-15 10:38:01

标签: ios afnetworking

我是Ios应用程序开发的新手。我使用AFNetworking进行图像和数据加载,数据在集合视图中分箱但无法绑定图像。 这是我的集合视图和服务代码:

#import "ViewController.h"
#import "LabelCollectionViewCell.h"
@interface ViewController ()
{
    NSMutableArray *idArray;
    NSMutableArray *namelabelArray;
    UIImage *imagArray;
    NSMutableArray *dic ;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [[self userCollection]setDataSource:self];
    [[self userCollection]setDelegate:self];
    [self dataJson];
    NSLog(@"array: %@", namelabelArray);  
}

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
    return 1;
}

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

-(UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"cell";
    LabelCollectionViewCell *customCell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]; 
    [[customCell nameLabel]setText:[namelabelArray objectAtIndex:indexPath.item]];
    [[customCell idLabel]setText:[idArray objectAtIndex:indexPath.item]];
    return customCell;   
}

-(void)dataJson
{
    NSString *zipcode;
    NSString *url = [NSString stringWithFormat:@"%@",@"http://inveera.biz/lowkall_api/index.php/product_cat"];
    NSDictionary *params =[NSDictionary dictionaryWithObjectsAndKeys: zipcode,@"35005",nil];
    NSLog(@"Login URL %@", params);
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager POST:url parameters:params success:^(AFHTTPRequestOperation      *operation, id responseObject) {  
        NSLog(@"Login JSON: %@", responseObject);
        NSString *data = [responseObject valueForKey:@"data"];
        idArray = [data valueForKey:@"id"];
        namelabelArray =[data valueForKey:@"name"];
        imagArray =[data valueForKey:@"img_path"];
        NSLog(@"Error image: %@", imagArray);
        [self.userCollection reloadData];
    }
          failure:^(AFHTTPRequestOperation *operation, NSError *error)
     {
         NSLog(@"Error: %@", error);
     }];
}

我的json回复是

{
    "status":"true",
    "city":[{"cityname":"Acmar"}],
    "data":[
     {"id":"1","name":"Appliances","img_path":"categories\/1\/ac1.png","status":"1"},
     {"id":"2","name":"Electronics","img_path":"categories\/2\/ac2.png","status":"1"},
     {"id":"3","name":"Furniture","img_path":"categories\/3\/ac3.png","status":"1"},
     {"id":"4","name":"Cars","img_path":"categories\/4\/ac4.png","status":"1"},
     {"id":"5","name":"Pet Supplies","img_path":"categories\/5\/ac5.png","status":"1"},
     {"id":"6","name":"Others","img_path":"categories\/6\/ac6.png","status":"1"}
    ]
}

我能够绑定名称,但无法将图像与域的完整路径绑定 名称。 请帮帮我。提前谢谢。

2 个答案:

答案 0 :(得分:0)

首先,代替DateTime.Now; // it gives you today's Date and current Time DateTime.Today.AddHours(14:5); // it gives you the current date with customized time (`14:30:00`). DateTime.Now.AddDays(-1); // it gives you the previous day ,它应该是UIImage *imageArray;

然后,因为您正在使用AFNetworking更好地加载图像异步(使用NSString *imageURLString;)。

#import UIImageView+AFNetworking.h

答案 1 :(得分:0)

在AFNetworking Lib本身,他们为UIImageView添加了一个名为UIImageView + AFNetworking的类别类,用于从URL加载图像,需要调用以下方法并使用有效的URL请求。

 - (void)setImageWithURLRequest:(NSURLRequest *)urlRequest
                  placeholderImage:(UIImage *)placeholderImage
                           success:(void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, UIImage *image))success
                           failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse * _Nullable response, NSError *error))failure

-(UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"cell";
    LabelCollectionViewCell *customCell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]; 
    [[customCell nameLabel]setText:[namelabelArray objectAtIndex:indexPath.item]];
    [[customCell idLabel]setText:[idArray objectAtIndex:indexPath.item]];  
    [[customCell imageView] setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[imagArray objectAtIndex:indexPath.row]]]
                          placeholderImage:nil
                                   success:nil
                                   failure:^(NSURLRequest * _Nonnull request, NSHTTPURLResponse * _Nullable response, NSError * _Nonnull error) {
                                   }];
    return customCell; 
}