Swift 如何在VIPER结构中使用委托传输数据
我有两个页面,第一页是loginPage,另一页是MainViewPage,我想将userInfo(用户名和密码)从第一页传输到第二页,我使用VIPER结构,我已经在第二页中获得了userInfo,但是当我在第二页中使用Presenter函数更新UILabel时,进度被中断,它显示线程1:致命错误:在展开可选值时意外发现nilSwift 如何在VIPER结构中使用委托传输数据,swift,delegates,viper,Swift,Delegates,Viper,我有两个页面,第一页是loginPage,另一页是MainViewPage,我想将userInfo(用户名和密码)从第一页传输到第二页,我使用VIPER结构,我已经在第二页中获得了userInfo,但是当我在第二页中使用Presenter函数更新UILabel时,进度被中断,它显示线程1:致命错误:在展开可选值时意外发现nil import Foundation import UIKit class MainViewModuleView: UIViewController, MainViewM
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中此演示的代码:我认为这是一个MainViewModuleView未从情节提要加载/实例化的情况
不久之后,它似乎失去了与故事板的连接。您的标签在分配期间未初始化。我认为您的方法是在
viewDidLoad
之前被调用的