2014-04-26 61 views
0

我不確定爲什麼我的收藏視圖不會調用我的單元格,不知道爲什麼?此外,它從來沒有自動實現的方法,我不得不添加他們自己,部分的數量等問題它顯示一個空白的控制器視圖沒有單元格,或至少我的CollectionController.m文件中的方法不被稱爲我有一個NSLog在裏面。這是我的代碼。我的集合視圖單元格不被調用?

CollectionViewController.h

#import <UIKit/UIKit.h> 
#import "CollectionGridCell.h" 

@interface HomeCollectionViewController : UICollectionViewController 
<UICollectionViewDataSource, UICollectionViewDelegate> 

@property (strong, nonatomic) NSMutableArray *homeImages; 

@end 

CollectionController.m

#import "HomeCollectionViewController.h" 
#import "SlidingMenuViewController.h" 
#import "AFNetworking.h" 
#import "CollectionGridCell.h" 
#import <SDWebImage/UIImageView+WebCache.h> 

@implementation HomeCollectionViewController 

@synthesize homeImages; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    //add navigation top right bar items 
    UIBarButtonItem *shareItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: 
     UIBarButtonSystemItemAction target:self action:nil]; 
    UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: 
     UIBarButtonSystemItemCamera target:self action:nil]; 

    //add navigation top left bar items 
    UIBarButtonItem *menuBtn = [[UIBarButtonItem alloc] initWithImage: 
     [UIImage imageNamed:@"menuButton.png"] style:self target:self 
     action:@selector(drawerAnimations)]; 

    //add items to array 
    NSArray *actionButtonItems = @[shareItem, cameraItem]; 
    NSArray *leftActionButtonItems = @[menuBtn]; 

    //add array to navigation bar 
    self.navigationItem.rightBarButtonItems = actionButtonItems; 
    self.navigationItem.leftBarButtonItems = leftActionButtonItems; 
    // Do any additional setup after loading the view. 

    //grab content 
    [self getHomeData]; 
} 

- (void)drawerAnimations 
{ 
    SlidingMenuViewController *slidingClass = [[SlidingMenuViewController alloc] init]; 
    [slidingClass createMenuButton]; 
} 

- (void)getHomeData 
{ 
    NSArray *categoriesSelected = [[NSUserDefaults standardUserDefaults] 
     objectForKey:@"categories"]; 

    NSError* error; 
    NSString *userId = [[NSUserDefaults standardUserDefaults] objectForKey:@"userId"]; 

    NSData *jsonData2 = [NSJSONSerialization dataWithJSONObject:categoriesSelected 
     options:NSJSONWritingPrettyPrinted error:&error]; 
    NSString *jsonString = [[NSString alloc] initWithData:jsonData2 
     encoding:NSUTF8StringEncoding]; 

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
    NSDictionary *parameters = @{@"userId": userId, @"categories": jsonString}; 
    manager.requestSerializer = [AFJSONRequestSerializer serializer]; 

    [manager GET:@"http://example.com/home" parameters:parameters 
    success:^(AFHTTPRequestOperation *operation, id responseObject) 
    { 
     homeImages = [responseObject valueForKeyPath:@"pic"]; 
     NSLog(@"JSON: %@", homeImages); 
    } 
    failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    { 
     NSLog(@"Error: %@", error); 
    }]; 
} 

//sections to be displayed 
#pragma mark - 
#pragma mark UICollectionViewDataSource 

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

//number of items in each section 
-(NSInteger)collectionView:(UICollectionView *)collectionView 
    numberOfItemsInSection:(NSInteger)section 
{ 
    return homeImages.count; 
} 

//setting up each cell 
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView 
       cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CollectionGridCell *myCell = [collectionView dequeueReusableCellWithReuseIdentifier: 
     @"GridCell" forIndexPath:indexPath]; 

    UIImage *image; 
    long row = [indexPath row]; 

    image = [UIImage imageNamed:homeImages[row]]; 
    NSString *url = @"http://pics.example.com/"; 
    NSString *imageUrl = [NSString stringWithFormat:@"%@%@", url, image]; 

    // Here we use the new provided setImageWithURL: method to load the web image 
    [myCell.homeImage setImageWithURL:[NSURL URLWithString:imageUrl] 
        placeholderImage:[UIImage imageNamed:@"menuButton.png"]]; 

    // myCell.homeImage.image = imageUrl; 
    NSLog(@"the image is @%", imageUrl); 

    return myCell; 
} 

@end 

我的故事板是這樣的:

enter image description here

enter image description here

enter image description here

回答

1

你需要調用reloadData在您的收藏視圖收到數據後,因爲你正在做一個異步下載。

[manager GET:@"http://example.com/home" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 

    homeImages = [responseObject valueForKeyPath:@"pic"]; 
    [self.collectionView reloadData]; 
    NSLog(@"JSON: %@", homeImages); 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

    NSLog(@"Error: %@", error); 

}]; 
+0

謝謝你的工作! – Lion789

相關問題