2016-09-23 10 views
0

У меня есть UICollection view в ViewController и он вообще не отвечает на didSelectItemAtIndexPath.Swift UICollectionView: didSelectItemAtIndexPath не отвечает

// super class 
class ViewController: UIViewController, iCarouselDelegate, iCarouselDataSource, UICollectionViewDelegate, UICollectionViewDataSource { 

    @IBOutlet weak var collectionView: UICollectionView! 


// delegate 
override func viewDidLoad() { 
     super.viewDidLoad() 

     // collection view delegate and datasource 
     collectionView.delegate = self 
     collectionView.dataSource = self 


// did select item 
     func collectionView(collectionView: UICollectionView!, didSelectItemAtIndexPath indexPath: NSIndexPath!) { 

      print(indexPath) 

     } 

и этот делегат от IB. UiCollectionView delegate in IB

+0

Эй, Могу ли я узнать, есть ли кнопка в ячейке. Или что такое содержимое customCell? –

+0

когда я разместил вопрос, у меня не было кнопок, просто изображение и ярлык. теперь я ответил на этот вопрос, как я решил эту проблему. Go проверить мой ответ –

ответ

0

несколько догадок может быть полезным:

  • ты случайно перекрывая - (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath?

  • убедитесь, что установлен collectionView.userInteractionEnabled истинной

  • если некоторые высокий приоритет UIResponder как UIGestureRecognizer и UIButton добавлены в клетку или ее подвид, соответствующий метод должен называть вместо

+0

нет, я не сделал этого, спасибо @Chen Wei –

+0

У меня есть ICarousel в том же видеController, может, это причина? @Chen Wei –

+0

Нет, вы связали это «просмотр коллекции @IBOutlet» с представлением коллекции в раскадровке? Если это так, имя на скриншоте должно быть одинаковым с переменной «collectionview», а не по умолчанию «Collection View» –

0

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

я сделал кнопку в моей камере и в этом методе «cellForItemAtIndexPath» и добавил цели для него, как так:

imageButton.addTarget(self, action: #selector(ViewController.imageButtonAction(_:)), forControlEvents: UIControlEvents.TouchUpInside) 

и передал выбранный indexPath.row в этой кнопки теге так:

imageButton.tag = indexPath.row 

и это мое действие:

func imageButtonAction(sender: UIButton) { 

let categoryId = categories[sender.tag]["id"] 
    let categoryName = categories[sender.tag]["category_name"] 

    let mainCategory = self.storyboard?.instantiateViewControllerWithIdentifier("MainCategoryViewController") as! MainCategoryViewController 
    mainCategory.mainCategoryId = categoryId! 
    mainCategory.title = categoryName! 
    self.navigationController!.pushViewController(mainCategory, animated: true) 

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