2017-02-20 2 views
1

Это меня заводит, я много читал часы и пробовал все и не мог заставить эту селекторную кнопку работать. Это не должно быть сложно.Селектор для кнопки внутри коллекцииView cell

Внутри CellForItemAt я установил тег кнопки и попробую вызвать кнопку.

cell.deleteCellButton.tag = indexPath.item 
cell.deleteCellButton.addTarget(self, action: #selector(deleteCellButtonTapped(sender:)), for: UIControlEvents.touchUpInside) 

Я пробовал (_ :), «deleteCellButtonTapped:», а также любое другое число комбинаций скобки и я все еще получаю непризнанный селектор. Я не знаю, почему автозаполнение рекомендует (отправитель :) Я никогда раньше этого не видел.

тогда моя кнопка функции:

func deleteCellButtonTapped(sender: UIButton!) { 
    self.packArray.remove(at: sender.tag) 
     print(packArray.count) 
    self.outerCollectionView.deleteItems(at: [IndexPath(item: sender.tag, section: 0)]) 

    self.outerCollectionView.reloadData() 
    self.outerCollectionView.layoutIfNeeded() 
} 
+0

#selector (сам deleteCellButtonTapped (отправитель :)) работал для меня. – Anuraj

ответ

0

Предполагая, что вы используете Swift 3 и func deleteCellButtonTapped(sender: UIButton!) находится в том же классе:

addTarget(self, action: #selector(deleteCellButtonTapped(sender:)), for: .touchUpInside) 

работает отлично.

0

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

Что вы можете сделать, это префикс метода доступа к префиксам от имя класса.

Я предполагаю, что ваше имя класса MyClassViewController. И вы код будет выглядеть следующим образом:.

class MyClassViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { 

    .... // Other implementation methods 

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

     ....// create cell object and dequeue 

     cell.deleteCellButton.addTarget(self, action: #selector(MyClassViewController.deleteCellButtonTapped(_:)), for: .touchUpInside) 
     return cell 
    } 

    func deleteCellButtonTapped(_ sender: Any) { 
     // your method implementation 
      print("Selector method called") 
    } 
} 

Надежда это работает отлично