2014-11-06 2 views
0

Так что я некоторое время борется с этим. У меня есть UICollectionView, который я использую в качестве меню. Ячейками являются опции для переключения на другую страницу. Меню функционирует точно так, как должно, за исключением того, что, когда вы нажимаете на ячейку, скажем, ячейку 0, она должна появиться в следующем представлении. Я нахожу, что ячейка регистрирует прикосновение, но когда я пытаюсь определить, какая ячейка была нажата, это когда она разваливается. Я попытался отладить его, и мне кажется, что indexPath не имеет значения! Я использую функцию didSelectItemAtIndexPath, нет, это не didDeselect (я проверил, что уже из моих поисков, как исправить это). Я выложу код, но этот меня действительно насторожил. Любая помощь будет принята с благодарностью!DidSelectItemAtIndexPath не работает с collectionview

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
{ 
    NSLog("Pressed Cell") 

    if(indexPath == 0) 
    { 
     self.navigationController?.popToViewController(profileViewController, animated: true) 
    } 

} 

ответ

1

NSIndexPath содержит как часть и элемент, который вы можете получить доступ, как и indexPath.itemindexPath.section. Если у вас есть только один раздел (так что его значение не имеет значения), вы можете изменить свой код:

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
{ 
    NSLog("Pressed Cell") 

    if(indexPath.item == 0) 
    { 
     self.navigationController?.popToViewController(profileViewController, animated: true) 
    } 

} 
+0

Благодаря этому времени во время отладки он вступил в оператор if. Теперь мне просто нужно открыть другое представление. В настоящее время он все еще ничего не делает, когда вы нажимаете на ячейку, но это, вероятно, не связано с этим вопросом. – SamG

0

Я уверен, как правило, вызывается метод делегата, но если есть добавить любой жест в представлении. Удостоверьтесь, что перед тем, как добавить распознаватели жестов к себе, убедитесь, что для логического свойства "cancelTouchesInView" установлено значение false. Это может быть связано с тем, что жест распознается, поэтому он игнорирует передачу касаний к виду, вызывающему метод выбора ячейки, который не должен быть вызван. Ссылка на собственность.

+0

Это старая нить, но жаль, что принятый ответ был правильным. Я не понял, что indexPath имеет раздел и метод доступа к элементу, например indexPath.row и indexPath.section. – SamG

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