Cómo agregar uibutton acción en una colección de células?

Así que tengo esta colección ver con las células que contienen un botón de editar, que se encuentra en la esquina superior derecha. ¿Cómo puedo conectar una acción en él?

He intentado añadir cell.editbutton.addTarget en collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell Pero no detecta el touchUpInside Evento.

5 Comentarios

  1. 8

    Puede ser necesario por causa de vosotros-

    Escribir este código en 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)

    Y realizar su acción-

    override func viewDidLoad() {
    
           super.viewDidLoad()
    
     }
    
    @IBAction func editButtonTapped() -> Void {
        print("Hello Edit Button")
    }
    • Donde puedo escribir el IBAction, debo escribir en el CollectionViewCell Clase, o la CollectionViewController?
    • Comprobar Respuesta actualizada
    • Funciona como una brisa
    • bueno oye bro….
    • Gran respuesta! @ChrisMikkelsen Siempre uso la lógica, dentro de sus controladores.
  2. 18

    Crear la salida de su UIButton en UICollectionViewCell, escribir En

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

    Asegúrese de userInteraction es habilitar para el botón, así como para UICollectionViewCell.

    • sería mejor si swift había haga clic en los oyentes como java, todo esto en swift se parece a la muleta
    • Su trabajo como encanto!
    • Esta es la mejor respuesta!
  3. 1

    Sobre UICollectionView de la célula tomar botón (en Programación o el uso de guión gráfico). Añadir acción para el botón en la celda de la clase de archivo y declarar delegado en esa celda archivo de clase y llamar mismo delegado en el botón de acción del método para realizar una acción de edición.

    A continuación, implementar el mismo delegado en ViewController en el que ha creado la colección de la vista

  4. 0
    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)
            }
        }
    }
  5. -1

    Por lo que he entendido, quieres invocar editar botón de acción en lugar de didSelectItemAt:indexPath.
    Lo resuelto por anular canBecomeFocused (return false), entonces el botón editar de acción estarán involucrados pulsando en el botón editar

    • Claro tu respuesta – canBecomeFocused por lo que a la vista?

Dejar respuesta

Please enter your comment!
Please enter your name here