У меня есть основной вид с названием NoteTakerViewController. У меня есть класс weatherGetterController с протоколом, который возвращает 5 дней погоды с функцией протокола, называемой getMyWeather. Однако не вызывается функция протокола, которая возвращает данные о погоде в NoteTakerViewController. Я уверен, что у меня все правильно настроено с делегатами, но, возможно, у меня нет.
Это на самом деле не дубликат Swift Делегат не вызывается , поскольку решение на этой странице не сработало.
Любая помощь, которую вы могли бы предоставить, была бы полезной.
Вот соответствующие фрагменты кода:
Мой класс weatherGetterController:
protocol WeatherGetterControllerDelegate {
func getMyWeather(weather: [FiveDayForecast])
}
class WeatherGetterController: UIViewController, CLLocationManagerDelegate {
var weatherGetterDelegate: WeatherGetterControllerDelegate?
И в вызове функции getWeather WeatherGetterController. Строка
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"установлено в ноль, и я не знаю почему.
Спасибо