0

Как я могу ссылаться на конкретный UICollectionViewCell, чтобы каждый из них переходил на разные VC?UICollectionViewCell NSindexpath ссылочная позиция

Вот код для клеток:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    Cell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MY_CELL" forIndexPath:indexPath]; 
    cell.imageView.image = [UIImage imageNamed:self.myCellImages[0]]; 
    UIImage *cellImage = [[UIImage alloc] init]; 
    cellImage = [UIImage imageNamed:[self.myCellImages objectAtIndex:indexPath.row]]; 
    cell.imageView.image = cellImage; 
    return cell; 
} 

Так что это показывает кучу разных ячеек в зависимости от того, сколько изображений я загрузить в свой массив.

сказать, что мой массив:

self.myCellImages = @[@"1.jpg", @"2.jpg",.... @"20.jpg"]; 

как я ссылаться на отдельные клетки, так что он перетекает в другую VC? Например, при нажатии на ячейку, которая имеет изображение 1.jpg segues в 1VC и нажав на ячейку with17.jpg перетекает в 17VC

Является ли это что-то вроде:

if (NSIndexPath *indexPath = [NSIndexPath indexPathForItem:0 inSection:0];) 
{ 
//segue here 
} 

Я не могу понять из правильного синтаксиса

Благодаря Тимофею, я добавил

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:indexPath 
{ 
    NSString *storyboardId = @"main_to_VC1"; 
    [self performSegueWithIdentifier:storyboardId sender:indexPath]; 
} 

ответ

1

Вы должны установить перетекает между вашими коллегами (не ячейку) и контроллеры назначения, давая каждому уникальный идентификатор раскадровки.

Затем в методе collectionView:didSelectItemAtIndexPath: делегата, решить, какой контроллер вы хотите, чтобы непосредственно перейти на основе indexPath и инициировать переход программно:

- (void)collectionView:collectionView didSelectItemAtIndexPath:indexPath 
{ 
    NSString *storyboardId = ...; // determine storyboard ID based on indexPath 
    [self performSegueWithIdentifier:storyboardId sender:indexPath]; 
} 
+0

Привет Тимоти, спасибо за вашу помощь. Я создал два segues и назвал один main_to_VC1 и еще один main_to_VC2, из коллекцииVC, а не из ячейки, и установил для них «push». Затем я добавил collectionView didSelectItemAtIndexPath, как указано в моей редакции uptop. Однако он переключает представление на пустой вид, когда main_to_VC1/2 имеет индивидуальный контент. Нужно ли мне что-то делать с ячейками? – user3325170

+0

Ах! Я починил это. Придется делать: (void) collectionView: (UICollectionView *) collectionView Однако, когда я нажимаю кнопку «Назад» на новом VC, чтобы вернуться к представлению главной коллекции, я должен нажать его дважды, чтобы он вернулся , Любые идеи, почему это может быть сделано? – user3325170

+0

Хм, мой плохой ... Меня немного смутил мой собственный код. Таким образом, он работает в том, что это происходит, но я все еще запутался в том, как сделать так, чтобы каждая отдельная ячейка переходила к другому VC. Поскольку эта ячейка повторно используется, она создает 20 (если у меня есть 20 элементов в моем массиве ..), когда она запускается. Как я могу заставить каждого из них иметь собственный VC для перехода? – user3325170

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