2016-09-25 4 views
0

Wenn in einer Tabellenansichtszelle ein Label angetippt wird, möchte ich eine Segue durchführen, um Sie zu einer anderen Seite zu bringen.Wert vom Typ [UITableViewCell] hat kein Mitglied 'performSegueWithIdentifier'

bekomme ich folgende Fehler Wert vom Typ [UITableViewCell] hat kein Mitglied ‚performSegueWithIdentifier‘

class IdeaCell: UITableViewCell { 

    override func awakeFromNib() { 
     super.awakeFromNib() 

     let tapUser = UITapGestureRecognizer(target: self, action: #selector(IdeaCell.goToUserPage(_:))) 
     tapUser.numberOfTapsRequired = 1 
     usernameLbl.addGestureRecognizer(tapUser) 
    } 

func goToUserPage(sender: UITapGestureRecognizer) { 
     self.performSegueWithIdentifier("goToTableFromOriginal", sender: nil) 
    } 
} 
+2

Eine Zelle isn‘ t einen UIViewController, so dass er kein Segment ausführen kann. Sie sollten ein Protokoll verwenden, damit die Zelle eine Funktion für den View Controller vis delegation aufruft und die View-Controller-Funktion das Segment – Paulw11

+0

http://stackoverflow.com/a/22761617/4475605 ausführen kann – Adrian

Antwort

0

Anstatt zu versuchen, eine Anzapfung Gestenerkenner auf Ihre Zellen hinzuzufügen, wäre es einfacher und sauberer sein, wenn Sie implementiert die table(_:didSelectRowAt:) Methode (Swift 3-Version der Methodensignatur) im View-Controller, der die Tabellenansicht verwaltet. (Möglicherweise ein Tabellenansicht Controller?)

Scheitern, dass Sie ein Protokoll namens etwas wie TableViewCellDelegate erstellen müssen, die eine didSelect(cell:UITableViewCell)-Methode (oder etwas in diese Richtung) enthält. Sie würden dann Ihren benutzerdefinierten Tabellenansichtszellen eine Delegateigenschaft hinzufügen und diese Eigenschaft auf den Ansichtscontroller in der cellForRow(at:)-Methode festlegen.

Dann in der Zelle, würden Sie Ihre didSelect(cell:UITableViewCell) auf dem Vertreter der Zelle aufrufen.

Ihrer Ansicht Controller würden Sie indexPath(for cell: UITableViewCell) verwenden, um herauszufinden, welche Zelle abgehört wurde und das entscheiden zu verwenden, welche Maßnahmen auf die Gewinde Zelle zu nehmen (ein Segue, in Ihrem Fall aufgerufen wird.)

Verwandte Themen