gpt4 book ai didi

ios - Swift Delegate 方法永远不会被调用

转载 作者:可可西里 更新时间:2023-11-01 01:04:55 25 4
gpt4 key购买 nike

我已经在模态中声明了我的协议(protocol),如下所示

protocol MapViewControllerDelegate : class {
//func mapViewLocationSelected(sender:AnyObject, location:CLLocation, address:String)
func didSelectMap(sender:AnyObject)
}

我还如下声明了委托(delegate)

weak var delegate : MapViewControllerDelegate?

然后我关闭屏幕并如下调用委托(delegate)方法

self.dismissViewControllerAnimated(true, completion: nil)
delegate?.didSelectMap(self)

在调用模型的 View Controller 中,我有以下内容

如下声明Modal VC

var mvController : MapViewController = MapViewController()

然后我在 viewDidLoad

下如下设置委托(delegate)
mvController.delegate = self

然后我实现了委托(delegate)方法

func didSelectMap(sender: AnyObject) {
println("Came here")
}

但是我从来没有来过ddidSelectMap方法。我以前做过这个并且它有效,我无法弄清楚出了什么问题。任何帮助,将不胜感激。

父 View Controller pastebin.com/7z5vg6yJ

Model View Controller pastebin.com/DwAa6erQ

会不会是我使用的 MapKit 导致的问题?

提前致谢。

最佳答案

我的建议是在 prepareForSegue 方法中分配委托(delegate)。还要确保使用 segue.destinationViewController 来获取适当的 VC。

我假设如下所示。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showMapviewSegue"{
mapVController = segue.destinationViewController as! MapViewController
mapVController.delegate = self
}
}

试试这个,它应该可以工作。

关于ios - Swift Delegate 方法永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32583460/

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