presentViewController von TableViewCell
Ich habe einen TableViewController, TableViewCell und einem ViewController. Ich habe eine Schaltfläche in der TableViewCell und ich möchte ViewController mit presentViewController
(aber ViewController nicht haben einen Blick auf storyboard). Ich habe versucht mit:
@IBAction func playVideo(sender: AnyObject) {
let vc = ViewController()
self.presentViewController(vc, animated: true, completion: nil)
}
Fehler: der Wert vom Typ TableViewCell hat kein Mitglied presentViewController
Dann habe ich versucht
self.window?.rootViewController!.presentViewController(vc, animated: true, completion: nil)
Fehler: Warnung: Versuchen Sie zu präsentieren, dessen Blick ist nicht in die Fenster-Hierarchie!
Was mache ich falsch? Was sollte ich tun, um presentViewController von TableViewCell? Auch wie kann ich Daten auf die neue Präsentation von VC TableViewCell?
Update:
protocol TableViewCellDelegate
{
buttonDidClicked(result: Int)
}
class TableViewCell: UITableViewCell {
@IBAction func play(sender: AnyObject) {
if let id = self.item?["id"].int {
self.delegate?.buttonDidClicked(id)
}
}
}
----------------------------------------
//in TableViewController
var delegate: TableViewCellDelegate?
func buttonDidClicked(result: Int) {
let vc = ViewController()
self.presentViewController(vc, animated: true, completion: nil)
}
Ich die Fehlermeldung: Präsentation view-Controller auf detached view-Controller abgeraten
(Bitte beachten Sie, dass ich eine Kette von NavBar & TabBar hinter TableView.)
Ich habe auch versucht
self.parentViewController!.presentViewController(vc, animated: true, completion: nil)
Gleichen Fehler.
Habe auch versucht,
self.view.window?.rootViewController?.presentViewController(vc, animated: true, completion: nil)
Gleichen Fehler
- Ist die Taste gemeint, sekundäre (z.B. -, Accessoire-Ansicht) Auswahl?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie verwenden
protocol
zu übergeben, die Aktion wieder zutableViewController
1) Erstellen Sie eine
protocol
in Ihrer Zelle-Klasse2) Stellen Sie den
button
Aktion rufen Sie Ihrenprotocol
func3) Verknüpfen Sie Ihre
cell's protocol
imtableViewController
durchcell.delegate = self
4) Umsetzung der
cell's protocol
und fügen Sie code hinzuPresenting view controllers on detached view controllers is discouraged
aber Sie sollten überprüfen Sie Ihren code und suchen den FehlerWie es scheint, hast du ja schon die Idee, dass eine view-controller, müssen Sie einen view-controller. Also hier ist was Sie tun müssen:
Hier einige code:
Also sich selbst.presentViewController ist eine Methode aus der ViewController.
Der Grund, warum Sie diese Fehlermeldung bekommen, weil das "selbst", Sie beziehen sich auf die tableViewCell. Und tableViewCell hat keine Methode, presentViewController.
Ich denke, es gibt einige Optionen, die Sie verwenden können:
1.hinzufügen einer Stellvertretung und Protokoll in der Zelle, wenn Sie klicken Sie auf die Schaltfläche, die IBAction rufen
Dann in Ihre tableVC, brauchen Sie nur diese Methode implementieren und aufrufen selbst.presentViewController
2.verwenden Sie ein storyboard und ein segue
In das storyboard, und ziehen Sie Ihre Schaltfläche, um die VC, die Sie gehen wollen.