2017-06-14 59 views
0

我想从服务器获取图像并将其显示在集合视图中,因为我给出了背景色红色我得到纯红色的单元格bt我有图像视图和标签这两个都没有显示!收集视图图像没有显示,但网址工作正常

我从服务器self.iname获取图像名称是一个数组,其中我已经存储图像名称!!这个URL的事情工作,因为我用这个在配置文件图片在视图controller.so什么是错的我的代码为什么我没有得到图像视图?提前感谢您的建议!!是的,我给了我的数据源和代表,并给予我所有的插座连接。 我正在使用故事板!

这是我收集视图块级

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 

{ 


[collectionView registerClass:[ColCell class] forCellWithReuseIdentifier:@"cell"]; 

ColCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath]; 

[[[cell contentView] subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; 

UIView * contents=[[UIView alloc]  initWithFrame:cell.contentView.bounds]; 

[contents setBackgroundColor:[UIColor clearColor]]; 

[cell.contentView addSubview:contents]; 

if([self.iname count]!=0){ 

[cell setTag:indexPath.row]; // set tag to the indexPath.row so we can access it later 

// add interactivity 
UITapGestureRecognizer * tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onButtonTapped:)]; 

[tap setNumberOfTapsRequired:1]; 

[cell addGestureRecognizer:tap]; 

NSString *fileName = [NSString stringWithFormat:@"%@",self.iname]; //objectAtIndex:indexPath]; 

NSLog(@"%@",fileName); 

NSString *baseurl=[NSString stringWithFormat:@"http://test.kre8tives.com/barebon/upload/"]; 

NSDictionary *dict = self.iname[indexPath.row]; 

NSLog(@"%@", [self.iname objectAtIndex: indexPath.row]); 

NSString *paths = [NSString stringWithFormat:@"%@%@", baseurl, dict]; 

NSLog(@"@@@@%@",paths); 

[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:paths]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 

    NSLog(@"%@",response); 

    cell.dimg.image=[[UIImage alloc] initWithData:data]; 
    // UIImage *imgage = [[UIImage alloc] initWithData:data]; 

    // cell.dimg.image=imgage; 
    cell.lbl.text=[self.iname objectAtIndex:indexPath.row]; 
    NSLog(@"%@",[self.iname objectAtIndex:indexPath.row]); 
}]; 
} 
    //cell.dimg.image=[[UIImage alloc]initWithData:data]; 
    if (cell.selected) { 
     cell.backgroundColor = [UIColor blueColor]; // highlight selection 
    } 
    else 
    { 
     cell.backgroundColor = [UIColor redColor]; // Default color 
    } 
    return cell; 
} 

这是我的collectionviewcell文件(colcell.h)

#import <UIKit/UIKit.h> 

@interface ColCell : UICollectionViewCell 
@property (strong, nonatomic) IBOutlet UIImageView *dimg; 
@property (strong, nonatomic) IBOutlet UILabel *lbl; 

@end 

这是我的collectionviewcell文件.M(colcell.m)

#import "ColCell.h" 

@implementation ColCell 

-(void)awakeFromNib { 
    UITapGestureRecognizer * tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onButtonTapped:)]; 
    [tap setNumberOfTapsRequired:1]; 
    [self addGestureRecognizer:tap]; 
    [super awakeFromNib]; 
} 

-(void)onButtonTapped:(id)sender 
{ 
//the response to the gesture. 
//mind that this is done in the cell. If you don't want things to happen from this cell. 
//then you can still activate this the way you did in your question. 

} 
@end 

这是我的一个回应

2017-06-14 09:03:03.647 MenuBar[754:23050] <NSHTTPURLResponse: 0x60000023c5c0> { URL: http://test.kre8tives.com/barebon/upload/impotedbeernew.png } { status code: 200, headers { 
"Accept-Ranges" = bytes; 
"Cache-Control" = "max-age=2592000"; 
"Content-Length" = 8261; 
"Content-Type" = "image/png"; 
Date = "Tue, 13 Jun 2017 12:04:47 GMT"; 
Etag = "\"31e1206-2045-551704d9ee800\""; 
Expires = "Thu, 13 Jul 2017 12:04:47 GMT"; 
"Last-Modified" = "Thu, 08 Jun 2017 10:27:44 GMT"; 
Server = "Apache Phusion_Passenger/4.0.10 mod_bwlimited/1.4 mod_fcgid/2.3.9"; 
Vary = "User-Agent"; 
} } 
2017-06-14 09:03:03.647 MenuBar[754:23050] impotedbeernew.png 
2017-06-14 09:03:03.648 MenuBar[754:23050] <NSHTTPURLResponse: 0x60000023e360> { URL:  http://test.kre8tives.com/barebon/upload/blendedwhiskyne.png } { status code: 200, headers { 
    "Accept-Ranges" = bytes; 
    "Cache-Control" = "max-age=2592000"; 
    "Content-Length" = 17188; 
    "Content-Type" = "image/png"; 
    Date = "Tue, 13 Jun 2017 12:04:47 GMT"; 
    Etag = "\"31e118d-4324-5517150204640\""; 
    Expires = "Thu, 13 Jul 2017 12:04:47 GMT"; 
    "Last-Modified" = "Thu, 08 Jun 2017 11:40:01 GMT"; 
    Server = "Apache Phusion_Passenger/4.0.10 mod_bwlimited/1.4 mod_fcgid/2.3.9"; 
    Vary = "User-Agent"; 
} } 
+0

如果显示图像,此代码也是错误的,您将在单元格中看到错误的图像(因为UICollectionView的单元重用系统)。 'SDWebImage'可以帮助你[https://github.com/rs/SDWebImage](https://github.com/rs/SDWebImage) '[imageView sd_setImageWithURL:imageUrl]' –

+0

我几乎完成了这个n和我试图添加这个库,但它不工作,所以我用我的方法本身!! @ DungTran – Akshay

+0

我认为它有点错误,你怎么注册你的'colcell'。注册应该发生在collectionview的init中,而不是在它已经被叫做 – Joshua

回答

1

最后,删除这些代码将适用于@Akshay。

[[[cell contentView] subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; 
UIView * contents=[[UIView alloc] initWithFrame:cell.contentView.bounds]; 
[contents setBackgroundColor:[UIColor clearColor]]; 
[cell.contentView addSubview:contents]; 

因为它们是未使用代码和所述第一代码线上移除标签lbl和ImageView的dimg,因此它们不被显示。