1

我有两页,第一页是loginPage,另一页是MainViewPage

我想将userInfoUserNamePassword)从第一页转移到第二页,我正在使用 VIPER 结构。

我已经userInfo在第二页得到了,但是当我使用Presenter函数更新UILabelSecondPage,进度被破坏了,它显示以下错误:

线程 1:致命错误:在展开可选值时意外发现 nil。

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
    }
}

这是我的Presenter

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函数时,进度被破坏了。此存储库中此演示的代码

4

2 回答 2

1

我认为这是 MainViewModuleView 没有从情节提要中加载/实例化的情况。

不久之后,它似乎失去了与故事板的联系。

于 2018-04-10T12:19:29.510 回答
0

您的标签在分配期间未初始化。我认为你的方法之前被调用过viewDidLoad

于 2020-01-04T09:48:24.683 回答