Как передать данные с помощью делегата в структуре 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.

Другие вопросы по тегам