How to add uibutton action in a collection view cell?

后端 未结 5 1041
走了就别回头了
走了就别回头了 2021-01-03 01:03

So I have this collection view with cells containing an edit button, located on the upper right corner. How do I wire up an action into it?

I tried adding <

相关标签:
5条回答
  • 2021-01-03 01:18

    As I understood, you want to invoke edit button action instead of didSelectItemAt:indexPath. I solved this by override canBecomeFocused (return false), then your edit button action will be involved by tapping on edit button

    0 讨论(0)
  • 2021-01-03 01:24
    protocol CollectionViewCellDelegte {
        func collectionViewCellDelegte(didClickButtonAt index: Int)
    }
    
    class ImageCollectionViewCell: UICollectionViewCell {
        var index = 0
        var delegte: CollectionViewCellDelegte? = nil
    
        @IBAction func buttonAction(_ sender: UIButton) {
            if let del = self.delegte {
                del.collectionViewCellDelegte(didClickButtonAt: index)
            }
        }
    }
    
    0 讨论(0)
  • 2021-01-03 01:30

    On UICollectionView cell take button (Programmatically or using storyboard). Add action for that button in cell class file and declare delegate in that cell class file and call same delegate in button action method to perform edit action.

    Then implement same delegate in ViewController in which you have created collection view

    0 讨论(0)
  • 2021-01-03 01:34

    Create the outlet of your UIButton in UICollectionViewCell, write In

    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)
    }
    

    Make sure userInteraction is enable for the button as well as for UICollectionViewCell.

    0 讨论(0)
  • 2021-01-03 01:38

    May be needful for you-

    Write this code in 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)
    

    And perform your action-

    override func viewDidLoad() {
           super.viewDidLoad()
    }
    
    @IBAction func editButtonTapped() -> Void {
        print("Hello Edit Button")
    }
    
    0 讨论(0)
提交回复
热议问题