簡體   English   中英

如何在iOS swift中將數據傳遞給以前的viewController?

[英]how to pass data to previous viewController in iOS swift?

我的問題是重復的,但我不需要合適的答案。 另外,在如何將數據數組回調到 iOS Swift 中的另一個 viewController之前,我已經提出了相同的問題

我有一個名為 CreateCardViewController 的父視圖控制器和一個名為 webViewController 的子控制器。

在父視圖控制器中,我使用 carbonKit 來顯示標簽欄菜單。 當標簽欄菜單的第一個索引是 webViewController (即子控制器)時。

我的問題是:如何從子控制器向父控制器發送數據?

例如:從一個孩子,viewController 會得到一個標簽欄菜單項的列表。 獲取標簽欄菜單項后,我需要將菜單項發送到父視圖控制器以顯示標簽欄。

這是我正在嘗試做的清晰圖片:

在此處輸入圖片說明

你可以像@Aqua 所說的那樣使用委托。 或為此使用觀察。

class ParentViewController: UIViewController {
 override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(self.updateParentViewController(_:)), name: Notification.Name(rawValue: "updateParentViewController"), object: nil) 
 }
@IBaction func updateParentViewController(_ notification: NSNotification){
if let receivedData = notification.userInfo?["data"] as? Any {
    //use received data 
    // update your parentViewController. 
}
}
}

//.............

class ChildViewController: UIViewController {
     override func viewDidLoad() {
        super.viewDidLoad()
}
func sendDataToParentViewController() {
        let dataDict:[String: Any] = ["data"://what you want to send.]
        NotificationCenter.default.post(name: . updateParentViewController, object: nil, userInfo: dataDict)
    }
}

這對我有用。

在您的自定義 ChildViewController 添加屬性parentViewController並在您創建該子視圖控制器時設置它。 然后,在父視圖控制器上實現特定方法,從子視圖控制器接收數據。

protocol ParentViewControllerProtocol {
    func receiveChildData(_ child: UIViewController, data: Any)
}

class ChildViewController: UIViewController {
    var parentViewController: ParentViewControllerProtocol!

    func timeToSendDataToParentViewController() {
         parentViewController.receiveChildData(self, data: self.data)
    }
}

class ParentViewController: UIViewController, ParentViewControllerProtocol {
     func receiveChildData(_ child: UIViewController, data: Any) {/*handle data*/}

     func addChildViewController() {
        let child = ChildViewController();
        child.parentViewController = self
        // do the rest of adding child to parent
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM