Как передать данные с помощью делегата в структуре VIPER
У меня есть две страницы, одна страница - loginPage, другая - MainViewPage, я хочу перенести userInfo (UserName и Password) со страницы одна на две, я использую структуру VIPER , Я уже получаю userInfo на второй странице, но когда я использую Presenter функция обновления UILabel в SecondPage, прогресс был прерван, он показывает поток 1: фатальная ошибка: неожиданно обнаружен ноль при развертывании необязательного значения.
import Foundation
import UIKit
class MainViewModuleView: UIViewController, MainViewModuleViewProtocol
{
var presenter: MainViewModulePresenterProtocol?
@IBOutlet weak var userInfo: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// print(NSHomeDirectory()as NSString)
}
func updateLabel(text:String){
print(text)
userInfo.text = text
}
}
Вот мой ведущий:
import Foundation
class MainViewModulePresenter: MainViewModulePresenterProtocol, MainViewModuleInteractorOutputProtocol
{
weak var view: MainViewModuleViewProtocol?
var interactor: MainViewModuleInteractorInputProtocol?
var wireFrame: MainViewModuleWireFrameProtocol?
var delegate: MainModuleDelegate?
init() {}
}
extension MainViewModulePresenter: MainModuleDelegate{
func sendLoginUser(userName: String) {
print("MainViewModulePresenter?.sendLoginUser: " + userName)
let text = userName
view?.updateLabel(text: text)
}
}
Текст в Presenter и MainView имеет значение, но когда он вызывает функцию updateLabel, прогресс прерывается. Код этой демонстрации в GitHub: https://github.com/paboo199148/VIPERDemo
1 ответ
Я думаю, что это случай, когда MainViewModuleView не загружается / не создается из раскадровки.
Кажется, вскоре после этого теряется связь с раскадровкой.
Ваш ярлык не инициализирован во время назначения. Я думаю, ваш метод вызывается раньшеviewDidLoad
.