![](/img/trans.png)
[英]How to pass data from XIB ViewController to TabBarController in iOS Swift
[英]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.