2014-09-09 3 views
-1

я посылаю JSON и сохранять значения в коллекции просмотра массива показывает пустой в didSelectItemAtIndexPath Пожалуйста, помогите мне ..CollectionView с JSON данных

NSDictionary * jsonResult = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:nil]; 

    albumImageArr = [NSMutableArray array]; 
    [albumImageArr addObjectsFromArray:[jsonResult objectForKey:@"photoList"]]; 

    NSLog(@"Array %@",albumImageArr); 

    for (NSDictionary *dic in albumImageArr) 
    { 

    str1=[dic objectForKey:@"photoURL"]; 
    [arr addObject:str1]; 

    } 


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

    static NSString *identifier = @"Cell"; 

    CustomCell *cell = (CustomCell *)[collectionView1 dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; 

    NSString *path = [[albumImageArr objectAtIndex:indexPath.row] objectForKey:@"photoURL"]; 
    NSURL *url = [NSURL URLWithString:path]; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    UIImage *image = [[UIImage alloc] initWithData:data]; 

    cell.imageView.image = image; 

    return cell; 
} 


- (void)collectionView:(UICollectionView *)collectionView1 didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 

    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

    PhotoDescriptionViewController *albumsController = (PhotoDescriptionViewController *)[storyBoard instantiateViewControllerWithIdentifier:@"DescriptionView"]; 

    NSString *senderImg=[arr objectAtIndex:indexPath.item]; 
    albumsController.receivedImage=senderImg; 

    [self.navigationController pushViewController:albumsController animated:YES]; 

} 
+0

Пожалуйста, объясните, что отладки, которые вы сделали, чтобы исправить это. – Fogmeister

+0

Я показываю данные изображения в cellForRowAtIndexPath. и я хочу показать данные изображения в detailViewController с помощью didSelectItemAtIndexPath. – Chenna

+0

Итак, вы получаете доступ к той же структуре данных в файле didSelectItemAtIndexPath? Не ожидайте получить данные из ячейки, получить ее из своей структуры данных. –

ответ

1

Вам просто нужно сделать то же, что вы сделали в cellForRowAtIndexPath, а затем установите receivedImage of albumController на изображение (предполагая, что receivedImage является UIImage).

- (void)collectionView:(UICollectionView *)collectionView1 didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 

    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

    PhotoDescriptionViewController *albumsController = (PhotoDescriptionViewController *)[storyBoard instantiateViewControllerWithIdentifier:@"DescriptionView"]; 

    NSString *path = [[albumImageArr objectAtIndex:indexPath.row] objectForKey:@"photoURL"]; 
    NSURL *url = [NSURL URLWithString:path]; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    UIImage *image = [[UIImage alloc] initWithData:data]; 

    albumsController.receivedImage = image; 

    [self.navigationController pushViewController:albumsController animated:YES]; 

} 

В ответ на ваши дальнейшие запросы: В receivedImage изменения PhotoDescriptionViewController из NSString на UIImage, то в viewWillAppear: (или там, где вы установите изображение), чтобы:

imageView.image = receivedImage; 
+0

ThanK you Soo Much Nick – Chenna

+0

Добро пожаловать. – Nick

+0

показано это предупреждение несовместимые типы указателей, присваивающие 'nsstring *' из 'uiimage *' – Chenna

Смежные вопросы