如何在Swift 4 中将数据从RightViewController 发送到MainView Controller?
How to send data from RightViewController to MainView Controller in Swift 4?
您好,我使用 MMDrawerController
作为右侧菜单。我有 2 个 ViewController
首先是 HomeVC
,在 UICollectionView
中有产品列表数据,还有 1 个过滤器按钮。
当我按下那个过滤器按钮时,我推到过滤器屏幕 RightViewVC
。现在我想要的是,我想将选定的过滤器值传递给 HomeVC
。我该怎么做?
您可以通过多种方式完成此操作
1.通过使用块方法
当你推送到 RightViewVC
时写下面的代码。
let nextViewController = self.storyboard?.instantiateViewController(withIdentifier: "RightViewVC") as! RightViewVC
nextViewController.delegate = self as! customeDelegate
nextViewController.onApplyFilterTap = {(_ arrSelectedFilter: NSMutableArray) -> Void in
self.collectionView.reloadData()
}
self.show(nextViewController, sender: self)
在 RightViewVC
控制器中定义它。我创建了数组,您可以根据需要更改它。
var onApplyFilterTap: ((_ arrSelectedFilter: NSMutableArray) -> Void)? = nil
你需要这样调用
self.arrFilterSelection.add(whichButtonClicked)
self.arrFilterSelection.add(locationTextView.text!)
self.arrFilterSelection.add(byPriceToTextField.text!)
self.arrFilterSelection.add(byPriceFromTextField.text!)
self.arrFilterSelection.add(timeTextview.text!)
onApplyFilterTap!(self.arrFilterSelection)
2。通过使用 NotificationCenter
在下面写下你的 HomeVC
NotificationCenter.default.addObserver(self, selector: #selector(refreshProductListBasedonSelectedFilterValue(_:)), name: NSNotification.Name(rawValue: "refreshProductListBasedonSelectedFilterValue"), object: nil)
@objc func refreshProductListBasedonSelectedFilterValue(_ notification: Notification) {
let info = notification.object as? NSDictionary
let arrSelectedFilteredValues = info?.value(forKey: "selectedFilter") as! NSMutableArray
self.collectionView.reloadData()
}
从RightViewVC
你需要这样调用。
let dict = NSMutableDictionary()
dict.setValue(self.arrFilterSelection, forKey: "selectedFilter")
NotificationCenter.default.post(name: NSNotification.Name("refreshProductListBasedonSelectedFilterValue"), object: dict)
3。你也可以使用 delegate
您好,我使用 MMDrawerController
作为右侧菜单。我有 2 个 ViewController
首先是 HomeVC
,在 UICollectionView
中有产品列表数据,还有 1 个过滤器按钮。
当我按下那个过滤器按钮时,我推到过滤器屏幕 RightViewVC
。现在我想要的是,我想将选定的过滤器值传递给 HomeVC
。我该怎么做?
您可以通过多种方式完成此操作
1.通过使用块方法
当你推送到 RightViewVC
时写下面的代码。
let nextViewController = self.storyboard?.instantiateViewController(withIdentifier: "RightViewVC") as! RightViewVC
nextViewController.delegate = self as! customeDelegate
nextViewController.onApplyFilterTap = {(_ arrSelectedFilter: NSMutableArray) -> Void in
self.collectionView.reloadData()
}
self.show(nextViewController, sender: self)
在 RightViewVC
控制器中定义它。我创建了数组,您可以根据需要更改它。
var onApplyFilterTap: ((_ arrSelectedFilter: NSMutableArray) -> Void)? = nil
你需要这样调用
self.arrFilterSelection.add(whichButtonClicked)
self.arrFilterSelection.add(locationTextView.text!)
self.arrFilterSelection.add(byPriceToTextField.text!)
self.arrFilterSelection.add(byPriceFromTextField.text!)
self.arrFilterSelection.add(timeTextview.text!)
onApplyFilterTap!(self.arrFilterSelection)
2。通过使用 NotificationCenter
在下面写下你的 HomeVC
NotificationCenter.default.addObserver(self, selector: #selector(refreshProductListBasedonSelectedFilterValue(_:)), name: NSNotification.Name(rawValue: "refreshProductListBasedonSelectedFilterValue"), object: nil)
@objc func refreshProductListBasedonSelectedFilterValue(_ notification: Notification) {
let info = notification.object as? NSDictionary
let arrSelectedFilteredValues = info?.value(forKey: "selectedFilter") as! NSMutableArray
self.collectionView.reloadData()
}
从RightViewVC
你需要这样调用。
let dict = NSMutableDictionary()
dict.setValue(self.arrFilterSelection, forKey: "selectedFilter")
NotificationCenter.default.post(name: NSNotification.Name("refreshProductListBasedonSelectedFilterValue"), object: dict)
3。你也可以使用 delegate