【发布时间】:2020-02-20 02:57:59
【问题描述】:
我有一个名为 NoteTakerViewController 的主视图。我有一个带有协议的weatherGetterController 类,该类使用一个名为getMyWeather 的协议函数返回5 天的天气。但是,没有调用将天气数据返回给 NoteTakerViewController 的协议函数。我确信我已经与代表正确设置了所有内容,但也许我没有。
这确实不是 Swift Delegate Not Being Called 的重复,因为该页面上的解决方案不起作用。
您能提供的任何帮助都会很棒。
这里是相关代码sn-ps:
我的 weatherGetterController 类:
protocol WeatherGetterControllerDelegate {
func getMyWeather(weather: [FiveDayForecast])
}
class WeatherGetterController: UIViewController, CLLocationManagerDelegate {
var weatherGetterDelegate: WeatherGetterControllerDelegate?
并在 WeatherGetterController 中调用“getWeather”函数。线
self.weatherGetterDelegate?.getMyWeather(weather: myForecast)
没有被调用。
func getWeather() {
...
getNetWeather { (fetchedInfo) in
if let fetchedInfo2 = fetchedInfo {
//self.updateUI(mainWeather: fetchedInfo2)
//need to call delegate here
let myForecast = self.figureFive(weather: fetchedInfo2)
//return the forecast
print(myForecast)
self.weatherGetterDelegate?.getMyWeather(weather: myForecast)
}
}
最后是NoteTakerViewController中的函数实现:
class NoteTakerViewController: UIViewController, ..., UITextFieldDelegate, WeatherGetterControllerDelegate
func getMyWeather(weather: [FiveDayForecast]) {
print("get my weather")
print(weather)
}
通过调试我可以看到“weatherGetterDelegate”被设置为nil,我不知道为什么。
谢谢
【问题讨论】:
-
给
weatherGetterDelegate赋值的代码在哪里? -
我没有那个,我想这就是我所缺少的,有什么提示可以放在哪里吗?
-
viewDidLoad可能是个好地方 -
我会在里面放什么,与 weatherGetterDelegate = self 或类似的东西有关吗?
标签: swift delegates delegation