0

Ich habe einen ViewController, in dem ich ein TableView mit einer benutzerdefinierten TableViewCell habe, in dem ich ein paar View-Objekte und eine Schaltfläche hinzugefügt habe. Ich möchte einen anderen ViewController präsentieren, wenn ich auf die Schaltfläche in der Zelle geklickt habe und ich auch senden muss (tableCell Daten, wo das Klick-Ereignis aufgetreten ist) und Receive (ausgewählter Wert aus der PickerView und anderen Label-Text) aus dem Popup ViewController dann schließlich Ich brauche einen Weg (wie einen Knopf in der Nähe), um es zu schließen.Präsentiere einen ViewController als Popover

Ich bin in der Lage, die Daten der Zelle zu senden, wo das Click-Ereignis in der Zelle aufgetreten mit dem folgenden Code

@IBAction func cellBtnClicked(_ sender: Any) { 
    let foodItem:FoodItem? 
    let indexPath : IndexPath 
    if let button = sender as? UIButton { 
     let cell = button.superview?.superview as! UITableViewCell 
     indexPath = self.tableView.indexPath(for: cell)! 
     let hotel = hotels[indexPath.section] 
     foodItem = hotel.menu[indexPath.row] 

dann bin ich, dass Zellendaten in den popover Controller geladen und versuche, es zu präsentieren, wie ein popover

let popoverContent = self.storyboard?.instantiateViewController(withIdentifier:"ShowPopoverVC") as! MiniCartVC 
     popoverContent.foodItem = foodItem 
     popoverContent.modalPresentationStyle = UIModalPresentationStyle.popover 

       if let popover = popoverContent.popoverPresentationController { 

        let viewForSource = sender as! UIView 
        popover.sourceView = viewForSource 

        // the position of the popover where it's showed 
        popover.sourceRect = viewForSource.bounds 

        // the size you want to display 
        popoverContent.preferredContentSize = CGSize(width: 200, height: 135) 
        popover.delegate = self 
       }    

       self.present(popoverContent, animated: true, completion: nil) 
    } 

Aber es kommt nicht als popover statt wie ein segue, das gesamte View.Also Erweiterung brauche ich einen Weg, um die Daten von popover VC auf die MainVC darauf entlassen zu senden.

Bitte lassen Sie mich wissen, wenn es eine Möglichkeit gibt, es richtig zu implementieren. Jede Ressource als Referenzzweck ist auch in Ordnung, danke.

+0

hier ein popover Tutorial -> https://www.youtube. com/watch? v = 48UA06EwfrM. Sie möchten auch das Delegatenmuster verwenden, um Daten von Ihrem Popover an den übergeordneten Ansichtscontroller zu senden. http://useyourloaf.com/blog/quick-guide-to-swift-delegates/ – Adrian

Antwort

0

Von Ihrem aufgeführten Code:

popover.delegate = self 

Sie die UIPopoverPresentationControllerDelegate gesetzt haben selbst zu sein. einfach die optionale Methode implementieren und nutzen diese Implementierung

func adaptivePresentationStyle (für Controller: UIPresentationController) -> UIModalPresentationStyle { return .none }

+0

Ich habe diese optionale Funktion enthalten. –

+0

Eigentlich hat deine Idee für mich funktioniert. Ich habe meine folgenden Code 'Funktions adaptivePresentationStyleForPresentationController (Controller: UIPresentationController) -> UIModalPresentationStyle { return .none }' geändert ----> 'Funktions adaptivePresentationStyle (für Controller: UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.none }, danke. –

+0

goty up abstimmen, wenn es hilfreich war. Es wäre auch für andere Benutzer von Vorteil. Danke. – soumil

Verwandte Themen