2014-11-11 2 views
0

меня скачать эту кодовую форму этой ссылку http://code4app.net/ios/FullScreenImageViewController/519cbf9a6803faaf72000000 У меня есть добавить изображение в ячейке, как этотИОСА как получить изображение из CollectionView методы клеточной didSelectItemAtIndexPath из cell.contentview.subview [0]

NSString *imageURL = [NSString stringWithFormat: @"%@",[[ary_UserPicture objectAtIndex:indexPath.row]valueForKey:@"StorePicturePath"]]; 
     if(imageURL.length != 0) 
     { 
      AsyncImageView *async = [[AsyncImageView alloc]initWithFrame:CGRectMake(15, 5, 100, 100)]; 
      [async loadImageFromURL:[NSURL URLWithString:imageURL]]; 
      async.backgroundColor=[UIColor whiteColor]; 
      [cell.contentView addSubview:async]; 
     } 

После этого Я хочу, чтобы увеличить изображение в соответствии с этой демонстрационной ссылкой, но я помещаю этот код в didSelectItemAtIndexPath этот метод моего краха приложения на vc.liftedImageView = cell.contentView.subviews [0]; на этом коде пожалуйста, дайте мне решение, как получить изображение для увеличения Это мой код

- (void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 
    UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath]; 
    GGFullscreenImageViewController *vc = [[GGFullscreenImageViewController alloc] init]; 
    NSLog(@"%@",cell.contentView); 
    NSLog(@"%@",cell.contentView.subviews[0]); 
    vc.liftedImageView = cell.contentView.subviews[0]; 
    [self presentViewController:vc animated:YES completion:nil]; 
} 

** Проблема заключается Как получить изображение в методе didSelectItemAtIndexPath я используется асинхронное изображение **

пожалуйста, поделитесь своими ценными знаниями, Есть ли какая-либо другая демонстрационная ссылка для увеличения изображения из коллекции, пожалуйста, поделитесь со мной Thankyou.

ответ

0

Здесь вопрос из-за ниже кода.

if (imageURL.length != 0) { 
    // Stuff to download image 
} 

Из выше условия мы можем видеть, что если imageURL длина varialbe больше 0, чем только изображения будут добавлены в ячейку.

Таким образом, существует случай, когда у вас нет действительного URL-адреса, или URL-адрес равен нулю (в любом случае условие является ложным). И это не будет добавлено изображения в ячейку.

vc.liftedImageView = cell.contentView.subviews[0]; 

Теперь выше линии, безусловно, сбою приложения, потому что у вас нет каких-либо вид суб (нет изображения) в ячейке.

Предложение:
Почему вы не создать ImageView в клетке. Добавьте UIImageView переменную в ячейку. Так что, когда вы загружаете изображение, вы просто устанавливаете изображение на этот образ. Как показано ниже.

NSString *imageURL = [NSString stringWithFormat: @"%@",[[ary_UserPicture objectAtIndex:indexPath.row]valueForKey:@"StorePicturePath"]]; 
if(imageURL.length != 0) 
{ 
    AsyncImageView *async = [[AsyncImageView alloc]initWithFrame:CGRectMake(15, 5, 100, 100)]; 
    [async loadImageFromURL:[NSURL URLWithString:imageURL]]; 
    async.backgroundColor=[UIColor whiteColor]; 
    // [cell.contentView addSubview:async]; --> Your previous implementation   
    // Instead of adding it assign it to your cell's imageView object 

    cell.imageView = async; 
} 

Перепишите код didSelectItemAtIndexPath, как показано ниже:

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

    @try { 


     UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath]; 

     // A safe check before going to access sibview. 
     if ([cell.contentView.subviews count] > 0) { 

      GGFullscreenImageViewController *vc = [[GGFullscreenImageViewController alloc] init]; 
      NSLog(@"%@",cell.contentView); 

      //NSLog(@"%@",cell.contentView.subviews[0]); 
      //vc.liftedImageView = cell.contentView.subviews[0]; 

      NSLog(@"%@",cell.imageView.image); 
      vc.liftedImageView = cell.imageView.image; 

      [self presentViewController:vc animated:YES completion:nil]; 
     } 

    } 
    @catch (NSException *exception) { 
     NSLog(@"Exception :%@",exception.debugDescription); 
    } 
} 
+0

, но у меня есть чек не хватает какой-либо URL изображения, я могу в состоянии видеть изображения, может быть проблема в том, AsyncImageView. –

+0

@ user3899589 - вместо добавления изображения async в ячейку вы можете установить его в imageView ячейки. Я объясняю в отредактированном ответе. Проверьте и сообщите мне, если это еще не ясно. – Kampai

+0

cell.imageView = async; Эта строка возвращает предупреждение, а изображение не добавляет несовместимый тип указателя типа для uiimageview в asyncImageView –

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