Вы можете попробовать это, в MVP докладчик позаботится об обновлении представления, поэтому измените его, чтобы иметь свойство представления.Здесь представление содержит только экземпляр WeatherController.
В терминах MVP подклассы UIViewController фактически являются представлениями, а не презентаторами.
class WeatherPresenter : WeatherViewPresenter {
unowned let view: WeatherView
let weather: WeatherModel
required init(view: WeatherView, weather: WeatherModel) {
self.view = view
self.weather = weather
}
func updateWeatherView() {
//...update properties on your weather view
self.view.setTemperature(self.weather.temperature)
}
}
Например, чтобы обновить метку температуры, используйте протокол для установки значения температуры.У вас может быть несколько методов для установки нескольких свойств или один для всех ваших элементов пользовательского интерфейса в представлении погоды.
protocol WeatherView: class {
func setTemperature(temp: String)
//same for pressure, humid etc
}
Теперь напишите протокол для ведущего погоды
protocol WeatherViewPresenter {
init(view: WeatherView, weather: WeatherModel)
func updateWeatherView()
}
Теперь, когда выЕсли у вас есть настройка докладчика для класса погоды, вы можете использовать его как
class WeatherViewController : UIViewController, WeatherView {
var presenter: WeatherViewPresenter!
override func viewDidLoad() {
super.viewDidLoad()
let model = //your weather model
presenter = WeatherPresenter(view: self, weather: model)
}
func setTemperature(temp: String) {
self.temperatureLabel.text = temp
}
}
После получения данных о погоде просто позвоните self.presenter.updateWeatherView()
, чтобы обновить вид погоды.
Для получения более подробной информацииинформация, пожалуйста см.