3

enter image description hereКак добавить действие uibutton в ячейку просмотра коллекции?

Поэтому у меня есть этот вид коллекции с ячейками, содержащими кнопку редактирования, расположенную в правом верхнем углу. Как подключить к нему действие?

Я попытался добавить cell.editbutton.addTarget в collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell Но он не обнаруживает событие touchUpInside.

+0

http: // codereview. stackexchange.com/questions/84615/retrieving-values-from-uitableviewcell/84655 –

ответ

5

Может быть потребное для Вы-

Написать этот код в cellForItemAtIndexPath

Swift 2.X

let editButton = UIButton(frame: CGRectMake(0, 20, 40,40)) 
     editButton.setImage(UIImage(named: "editButton.png"), forState: UIControlState.Normal) 
     editButton.addTarget(self, action: #selector(editButtonTapped), forControlEvents: UIControlEvents.TouchUpInside) 

cell.addSubview(editButton) 

Swift 3.X

let editButton = UIButton(frame: CGRect(x:0, y:20, width:40,height:40)) 
     editButton.setImage(UIImage(named: "editButton.png"), for: UIControlState.normal) 
     editButton.addTarget(self, action: #selector(editButtonTapped), for: UIControlEvents.touchUpInside) 

     cell.addSubview(editButton) 

И выполнить ваш action-

override func viewDidLoad() { 

     super.viewDidLoad() 

} 

@IBAction func editButtonTapped() -> Void { 
    print("Hello Edit Button") 
} 
+1

Где я пишу IBAction, следует ли писать его в классе CollectionViewCell или в CollectionViewController? –

+0

Отметить обновлено Отвечено – iDeveloper

+0

Работает как бриз –

8

Создать выход вашего UIButton в UICollectionViewCell, написать в

func collectionView(_ collectionView: UICollectionView, 
        cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    cell.button.tag = indexPath.row 
    cell.button.addTarget(self, 
     action: #selector(self.yourFunc(), 
     for: .touchUpInside) 
} 

func yourFunc(sender : UIButton){ 
    print(sender.tag) 
} 

Убедитесь userInteraction позволяют для кнопки, а также для UICollectionViewCell.

+0

было бы лучше, если бы быстрый щелкнул слушателями, как java, все это в быстром виде выглядит как костыль – user25

1

На кнопке выбора ячейки UICollectionView (программно или с помощью раскадровки). Добавьте действие для этой кнопки в файл класса ячейки и объявите делегат в этом файле класса ячеек и вызовите тот же делегат в методе действия кнопки для выполнения действия редактирования.

Затем реализовать же делегат в ViewController, в котором вы создали представление коллекции

0

протокол CollectionViewCellDelegte { функ collectionViewCellDelegte (didClickButtonAt индекс: Int) }

класс ImageCollectionViewCell: UICollectionViewCell {

var index = 0 
var delegte: CollectionViewCellDelegte? = nil 

@IBAction func buttonAction(_ sender: UIButton) { 
    if let del = self.delegte { 
     del.collectionViewCellDelegte(didClickButtonAt: index) 
    } 
} 

}

+0

Не могли бы вы отложить свой код вправо и объяснить, что это делает? https://stackoverflow.com/help/how-to-answer – Nope

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