PSCollectionView调用委托

时间:2013-11-11 13:27:08

标签: ios iphone objective-c json delegates

在我的应用程序中,我将使用PSCollectionView,但它不会调用委托方法。我这样做了:

  1. 我读了一个JSON文件
  2. 我解析此JSON以获取名称和图片网址
  3. 我使用您在此问题末尾找到的代码将设备连接到图片网址以获取宽度和高度
  4. 在此操作之后,我需要调用delegate方法来获取PSCollectionViewCell的数量,以定义每个单元格的高度并用图像和名称填充单元格。 我实现了委托方法,但它没有执行它们。我想我的问题是因为当它想要创建和定义单元格的特征时,包含填充单元格的信息的数组仍然是空的。我怎么解决这个问题?

    CODE:

    - (void) loadImageFromWeb:(NSString *)urlImg forName:(NSString*)name {
        NSURL* url = [NSURL URLWithString:urlImg];
        //NSURLRequest* request = [NSURLRequest requestWithURL:url];
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
    
        NSString *authCredentials =@"reply:reply";
        NSString *authValue = [NSString stringWithFormat:@"Basic %@",[authCredentials base64EncodedStringWithWrapWidth:0]];
        [request setValue:authValue forHTTPHeaderField:@"Authorization"];
    
        [NSURLConnection sendAsynchronousRequest:request
                                           queue:[NSOperationQueue mainQueue]
                               completionHandler:^(NSURLResponse * response,
                                                   NSData * data,
                                                   NSError * error) {
                                   if (!error){
                                       image = [[UIImage alloc] initWithData:data];
                                       imageWidth = image.size.width;
                                       imageHeight = image.size.height;
                                       imgWidth = [NSString stringWithFormat:@"%f", imageWidth];
                                       imgHeight = [NSString stringWithFormat:@"%f", imageHeight];
                                       self.dictWithDataForPSCollectionView = @{@"title": name,
                                                                                @"width": imgWidth,
                                                                                @"height": imgHeight};
                                       [self.arrayWithData addObject:self.dictWithDataForPSCollectionView];
                                       NSLog(@"DATA ARRAY: %@", self.arrayWithData);
                                   } else {
                                       NSLog(@"ERRORE: %@", error);
                                   }
    
                               }];
    }
    

    任何人都可以帮我解决这个问题吗?谢谢!

2 个答案:

答案 0 :(得分:1)

你的问题是代理和数据源是在你设置数组以解决问题之前调用的,你必须在设置数组时重新加载数据:

-(void)setArrayWithData:(NSArray *)arrayWithData{

    if(_arrayWithData != arrayWithData){
       _arrayWithData = arrayWithData;
    }

    [_yourCollectionView reloadData];

}

答案 1 :(得分:0)

确保通过执行myCollectionView.delegate = self将集合视图连接到视图控制器;

OR

控制界面构建器中的从collectionview拖动到视图控制器