【发布时间】:2018-08-22 15:58:54
【问题描述】:
我正在开发一个项目,该项目包含一个“创建新帐户”视图控制器及其附带的名为“CreateNewAccount”的 Swift 类。用户可以将 4 个输入值放入此视图控制器,即名字、姓氏、用户名和密码。单击此 VC 中的“创建帐户”按钮后,4 个输入值被传递到一个名为 UserInfoRetrieveModel 的 Swift 类(我相信是在 MVC 的模型层中),它们应该存储在该类中。
然后我想将这些值传递给另一个名为 UserInfoModel 的 Swift 类(也是一个模型),然后它将名字值委托给位于名为“ThanksForJoining”的 VC 中的 label 的文本值(及其附带的类)。
我已经弄清楚如何将值从 VC 传递到模型(CreateNewAccount 到 UserInfoRetrieveModel)和从模型传递到 VC(UserInfoModel 到ThanksForJoining),但是在我从模型到模型(UserInfoRetrieveModel 到 UserInfoModel)的转移中,最初输入的值我想传递给第二个模型类 UserInfoModel 的“CreateNewAccount”变为 nil。
下面是 CreateNewAccount、UserInfoRetrieve、UserInfo 和ThanksForJoining 的代码:
创建新帐户->
import UIKit
class CreateNewAccount: UIViewController{
@IBOutlet weak var FNInput: UITextField!
@IBOutlet weak var LNInput: UITextField!
@IBOutlet weak var usernameInput: UITextField!
@IBOutlet weak var passwordInput: UITextField!
var uInfoRetrieve = UInfoRetrieveModel()
@IBAction func thanksForJoining(_ sender: Any) {
uInfoRetrieve.firstName = FNInput.text!
uInfoRetrieve.lastName = LNInput.text!
uInfoRetrieve.userName = usernameInput.text!
uInfoRetrieve.password = passwordInput.text!
uInfoRetrieve.delegate = self
uInfoRetrieve.retrieving()
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension CreateNewAccount: UInfoRetrieveModelDelegate{
func credentialTransfer(data: String) {
print(data)
}
}
用户信息检索->
import Foundation
protocol UInfoRetrieveModelDelegate: class {
func credentialTransfer(data:String)
}
class UInfoRetrieveModel: NSObject {
weak var delegate: UInfoRetrieveModelDelegate?
var firstName: String = ""
var lastName: String = ""
var userName: String = ""
var password: String = ""
func retrieving(){
delegate?.credentialTransfer(data: firstName)
delegate?.credentialTransfer(data: lastName)
delegate?.credentialTransfer(data: userName)
delegate?.credentialTransfer(data: password)
}
}
用户信息->
import Foundation
protocol UserInfoModelDelegate: class {
func didReceiveDataUpdate(data: String)
}
class UserInfoModel {
weak var delegate: UserInfoModelDelegate?
let uInfoRetrieve = UInfoRetrieveModel()
func requestData() -> Array<String> {
let firstName = uInfoRetrieve.firstName
let lastName = uInfoRetrieve.lastName
let userName = uInfoRetrieve.userName
let password = uInfoRetrieve.password
delegate?.didReceiveDataUpdate(data: firstName)
delegate?.didReceiveDataUpdate(data: lastName)
delegate?.didReceiveDataUpdate(data: userName)
delegate?.didReceiveDataUpdate(data: password)
let credentials = [firstName, lastName, userName, password] as [Any]
return credentials as! Array<String>
}
}
感谢加入 ->
import UIKit
class ThanksForJoining: UIViewController {
var userInfo = UserInfoModel()
@IBOutlet weak var firstName: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
userInfo.delegate = self
firstName.text = userInfo.requestData()[0]
print("yo")
print(userInfo.requestData()[0])
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
extension ThanksForJoining: UserInfoModelDelegate {
func didReceiveDataUpdate(data: String) {
print(data)
}
}
【问题讨论】:
标签: swift model-view-controller uiviewcontroller model