gpt4 book ai didi

ios - Swift 将选择器从另一个 View 触发到一个 View

转载 作者:行者123 更新时间:2023-11-28 16:00:29 25 4
gpt4 key购买 nike

我有一个底 View 和一个顶 View 。顶 View 具有透明度。当顶 View 被关闭时,我想触发一个 #selector。我无法使用 viewWillAppearviewDidAppear 因为底部 View 仍然可见。如何在底部 View 中触发 #selector?可以替代 viewWillAppear 的东西吗?

主视图后面有一个模糊 View 。我正在使用 self.modalPresentationStyle = .overCurrentContext 来呈现 View 。

image

最佳答案

Protocol 是最适合您的解决方案。首先你需要像这样创建协议(protocol)

// MARK: - TopViewController Protocol
protocol TopViewControllerDelegate: NSObjectProtocol {
func topViewWillDismissWith(data: Dictionary<String,String>)
}

在你的 TopViewController 中创建 TopViewControllerDelegate 的属性,当你的 TopViewController 关闭时你需要像 一样调用委托(delegate)方法didTapOnDismissTopView

class TopViewController : UIViewController {
weak var delegate : TopViewControllerDelegate!
// so on...

// MARK: - Action method
func didTapOnDismissTopView() {
var dict = [String : String]()
dict["Amount"] = "$20.00"
dict["ExpireIn"] = "20day"
dict["Location"] = "USA"
dict["message"] = "hello friend this is your Answer"
self.delegate.topViewWillDismissWith(data: dict) //Must write this line
self.dismiss(animated: true, completion: nil)
}
}

现在是时候在 BottomViewController 中实现 TopViewControllerDelegate 协议(protocol)了

class BottomViewController : UIViewController,TopViewControllerDelegate {

// MARK: - Action method

func didTapOnDisplayTopView() {
let topVC = TopViewController()
topVC.delegate = self
self.present(topVC, animated: true, completion: nil)
}
// MARK: - TopViewControllerDelegate
// This method will call while topViewControllr Will Dismiss.
// if you want to pass data then pass otherwise you can remove perameter from method.
func topViewWillDismissWith(data: Dictionary<String, String>) {
// Do here which you want
}
}

当你呈现 TopViewController 时,你需要分配 delegate 属性。当你的 topViewControllr 将在那时关闭 topViewWillDismissWith 这个方法会被调用。希望对您有所帮助。

关于ios - Swift 将选择器从另一个 View 触发到一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41153621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com