Akshay Akshay -4 years ago 35
iOS Question

Collection view images are not showing but the Url works fine

I am trying to get images from server and show it in collection view as I have given background colour red I get plain red colour cells bt I have an image view and a label both those are not showing!!

I am getting the image names from server self.iname is an array in which I have stored image names!!This url thing works as I have used this for profile picture in a before view controller.so what is wrong in my code why am I not getting image view???thanks in advance for suggestions!!and yes I have given my datasource and delegates and given all my outlet connections.
I am using storyboard!!

this Is my collection view block-

- (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;
}


this is my collectionviewcell file (colcell.h)

#import <UIKit/UIKit.h>

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

@end


this is my collectionviewcell file .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


and this is one of my response

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";
} }

Answer Source

Finally, remove these code will work for @Akshay.

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

Because they are unused codes and the first code line removes label lbl and imageView dimg, so they aren't displayed.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download