如何在Swift 4中将数据从RightViewController发送到MainView Controller?

时间:2018-07-30 11:48:39

标签: ios xcode swift4 mmdrawercontroller

enter image description here

您好,我在右侧菜单中使用MMDrawerController。我有2个ViewController,第一个是HomeVCUICollectionView中的产品详情数据是一个过滤器按钮。

当我按下该过滤器按钮时,我将推至过滤器屏幕RightViewVC。现在我想要的是,我想将所选的过滤器值传递给HomeVC。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以通过多种方式执行此操作

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。您还可以使用委托