我有两个页面,第一页是loginPage,另一个是MainViewPage,我想将userInfo(UserName和Password)从第一页转到第二页,我使用的是VIPER结构,我已经在第二页获得了userInfo,但是当我使用Presenter函数在SecondPage中更新UILabel,进度被破坏,它显示了线程1:致命错误:在展开Optional值时意外发现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
}
}
这是我的演示者:
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
答案 0 :(得分:1)
我认为不是从故事板加载/实例化MainViewModuleView的情况。
之后不久它似乎失去了与故事板的联系。
答案 1 :(得分:0)
您的标签在分配过程中未初始化。我认为您的方法在viewDidLoad
之前被调用。