2017-02-13 2 views
0

Hallo Ich versuche, einen Viewcontroller mit einem uibutton in einer Tabellenansicht Zelle als Popover-Verbindung zu verbinden. Ich habe einen kleinen View-Controller mit 2 Buttons drin, der mein Popover sein sollte. Und ich habe eine Tabellenansicht mit vielen vielen Zellen und Schaltflächen in diesen Zellen. Wenn der Benutzer auf eine bestimmte Schaltfläche klickt, möchte ich ein Popover mit einem Anker auf der angeklickten Schaltfläche wie das Standardverhalten einer Popover-Verbindung auf statischem Inhalt öffnen.Swift 3: Popover-Verbindung von der Schaltfläche innerhalb der dynamischen uitableviewcell zu uiviewcontroller

Aber wenn mit dynamischen Inhalten zu tun ich diesen Fehler in meinem Drehbuch bin immer: kompilieren Verbindung konnte nicht ...

Hier ist eine kleine Auswahl dessen, was ich zu tun und der Fehler Ich versuche, Get: enter image description here

Ich möchte keine schmutzigen Hacks wie versteckte 1 px Tasten und so etwas verwenden. Ich habe versucht, einen benutzerdefinierten Übergang zu erstellen, aber es funktioniert auch nicht gut.

Was ist der beste Weg, dies zu erreichen?

Dies ist, wie dieses Beispiel sieht aus wie als Code:

import UIKit 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 1 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! CustomTableViewCell 

     let button = cell.customButton 

     return cell 
    } 

} 


import UIKit 

class CustomTableViewCell: UITableViewCell { 

    @IBOutlet weak var customButton: UIButton! 

    @IBAction func buttonTapped(_ sender: Any) { 


    } 

    override func awakeFromNib() { 
     super.awakeFromNib() 
    } 

    override func setSelected(_ selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 
    } 

} 
+0

warum Möchten Sie uiviewcontroller in Ihrer Zelle verwenden? –

+0

Ich möchte keinen uiviewcontroller in meiner Zelle verwenden. Ich bekomme auch die Frage nicht richtig – Kingalione

+1

Präsentieren Sie das Popover im Code. Sie können eine Ansicht in einer Prototypzelle nicht als Ankeransicht für ein Popover in einem Storyboard verwenden. – dan

Antwort

0

Wenn Ihr popover Ansicht nur mit Knöpfen ist, können Sie UIAlertController verwenden, aber der Pfeil erscheint nur in iPad

@IBAction func buttonTapped(_ sender: Any) { 

let alertVC = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) 
alertVC.modalPresentationStyle = .popover 
//setup 
if let popoverController = alertVC.popoverPresentationController { 
     popoverController.permittedArrowDirections = .any 
     popoverController.sourceView = self 
     popoverController.sourceRect = self.bounds 
    } 
} 
tableVC.present(alertVC, animated: true, completion: nil) 
+0

ja, aber die Tasten haben sehr komplexe Funktionen in ihnen – Kingalione

+0

gut, wenn Ihre Schaltfläche UI nicht komplex ist, hat das nichts mit Ihrer Logik innerhalb der Taste zu tun. – Terence

+0

die Schaltfläche ist auch eine benutzerdefinierte Schaltfläche – Kingalione

Verwandte Themen