перенести данные о погоде в контейнер - PullRequest
0 голосов
/ 10 мая 2018

Я не могу обновить метки в представлении контейнера.Вот как я это сделал.

Я написал свою функцию updateWeather в главном VC и успешно извлек данные о погоде.когда я печатал weatherJSON, он отображал все полученные данные в консоли.

Теперь, когда я начал писать функцию updateUI, я мог обновлять только метки на главном VC.

, поэтому я использовал приготовление segue для отправки данныхк представлению контейнера и отправил строку в контейнер VC и успешно обновил метку «влажность».все метки принимают строки без каких-либо проблем.

, но я понятия не имею, как отправить данные о погоде в контейнер.

Я попытался передать значения с помощью объекта weatherDataModel, но ничего не происходит.я даже объявил новый объект, относящийся к классу представления контейнера, и использовал его в функции updateUI для установки значений меток, но он тоже не будет работать.

Я понятия не имею, что передать вместо строки, чтобы получить данные о погодедо следующего VC.

override func prepare(for segue: UIStoryboardSegue, sender for: Any?)     {
    if segue.identifier == "displayFullWeatherInfo"{
        let destinationVC = segue.destination as! FullWeatherViewController
        destinationVC.delegate = "\(weatherDataModel.pressure)"
        ....
        ....

Вот мой класс WeatherDataModel:

import Foundation

class WeatherDataModel{
    var city = ""
    var temp = 0
    var country = ""
    var humidity = 0
} 

в моем главном VC я создал объект weatherDataModel и вот мой код updateWeatherInfo:

func updateWeatherInfo(json : JSON){

if let tempDefault = json["data"][0]["temp"].double{
weatherDataModel.temp = Int(tempDefault)
weatherDataModel.city = json["data"][0["city_name"].stringValue
weatherDataModel.country = json["data"][0]["country_code"].stringValue
weatherDataModel.humidity = json["data"][0]["rh"].intValue


updateWeatherUI()

}
else{
currentLocation.text = "Not Available"
}
}

1022 *

1 Ответ

0 голосов
/ 10 мая 2018

Создайте свойство для вашего объекта модели погоды в вашем втором VC FullWeatherViewController:

var weatherDataModel: WeatherDataModel! //your object

И в вашем первом ВК:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "displayFullWeatherInfo" {
            let destinationVC = segue.destination as! FullWeatherViewController
            destinationVC.weatherDataModel = weatherDataModel
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...