0

So habe ich eine Schaltfläche, die aussieht wie ein Stift in einer Sammlung Ansicht Zelle xib.Sammlung View Cell Button nicht auslösende Aktion

enter image description here

Dann habe ich diesen Code.

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

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "groupsCollectionViewCellIdentifier", for: indexPath) as! GroupCollectionViewCell 

    //add action to the edit button 
    cell.editButton.tag = indexPath.row 
    cell.editButton.addTarget(self, action: #selector(GroupsCollectionViewController.editGroupAction), for: .touchUpInside) 

    return cell 
} 

//segue to edit group 
func editGroupAction() { 
    performSegue(withIdentifier: "editGroupSegue", sender: self) 
} 

Aber immer wenn ich auf die Schaltfläche Bearbeiten klicke. Nichts passiert. Ich frage mich, was fehlt.

Antwort

0

Sind Sie die Klasse in der Zelle zuweisen und auf die Schaltfläche mit dem Controller verbinden und auch die Kennung der Segue zuweisen und auch Bruchstelle zu überprüfen, ob die func Anruf ist oder nicht

und verwenden segue wie diese

verwenden
+0

ich bereits die Klasse für Zelle zugewiesen haben, die Segue hat auch eine Kennung. –

+0

Sind Sie versuchen, Haltepunkt dann überprüfen Sie die Funktion aufgerufen wird oder nicht –

+0

So in den Haltepunkt hat es nicht einmal die Funktion aufgerufen. Ein Klick auf die Schaltfläche tut nichts. –

1

In Anbetracht Ihres Problems habe ich eine Demo mit den Details, die Sie oben mit einigen kleineren Änderungen bereitgestellt haben, erstellt.
Ich habe Ihre cellForItem Methode geändert. Meine modifizierte Version ist wie folgt.

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell : GroupCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "groupsCollectionViewCellIdentifier", for: indexPath) as! GroupCollectionViewCell 


    cell.editButton.tag = indexPath.row 
    cell.editButton.addTarget(self, action: #selector(editGroupAction(sender:)), for: .touchUpInside) 

    return cell 
} 


Und die Aktionsmethode wird geschrieben wie folgt:

func editGroupAction(sender: UIButton) { 
    print("Button \(sender.tag) Clicked") 
} 


aus dem Code I unten Einzelheiten geändert haben:
1) Weg der Erklärung von UICollectionViewCell Gegenstand.
2) Möglichkeit der Zuweisung der #Selector Methode an die UIButton. Und zuletzt
3) In der Aktionsmethode habe ich das Button-Tag drucken.

Mit den obigen Änderungen bekomme ich ein ordentliches Ergebnis. Ich habe den ausgewählten Index-Wert als Button-Tag, wie in Code in Consol zugewiesen. Die Ausgabe, die ich bekomme, ist wie folgt.

Button 2 Clicked 
Button 3 Clicked 
Button 4 Clicked 

Ich hoffe, das für Ihre Anforderungen arbeiten.

0

Wenn Sie iOS 10.Following verwenden, ist Code arbeiten

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


      let cell = collectionView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! YourCellClass 
cell.btnJoin.tag = (indexPath as NSIndexPath).row  
cell.btnJoin.addTarget(self, action: #selector(YourViewControllerClassName.doSomething(_:)), for: UIControlEvents.touchUpInside) 
    } 

Aktion

func doSomething(_ sender: UIButton) { 
      print("sender index",sender.tag) 
    } 
Verwandte Themen