【发布时间】:2018-08-20 18:31:56
【问题描述】:
我目前正在处理一个项目,该项目有一个创建帐户页面,该页面由一个名为 CreateNewAccount 的视图控制器和一个伴随它的同名类表示。有四个值被输入到这个视图控制器中:1)名字,2)姓氏,3)用户名,和 4)密码。此视图控制器还有一个“创建帐户”按钮,当按下该按钮时,应将在 4 个输入中输入的字符串值传输到一个名为 UInfoRetrieveModel 的新类,该类将在 MVC 配置下归类为模型。不幸的是,这个价值转移部分不起作用。
然后我让 UInfoRetrieveModel 将这 4 个值直接传递给另一个名为 UserInfo 的模型,然后该模型将这些值中的任何一个委托给 UI 端可能需要显示它们的其他视图控制器。我已经弄清楚如何将值从 UInfoRetrieveModel 传递到 UserInfo 以及从 UserInfo(这是一个模型)到所述视图控制器,但我还没有弄清楚如何从视图控制器(特别是 CreateNewAccount)传递到模型,在这种情况下是 UInfoRetrieveModel。
基本上我的想法是有两个模型类:一个模型接收 (UInfoRetrieveModel) 和一个委托 (UserInfo) 在 CreateNewAccount 中设置的数据值,以使跨 UI 的数据传输更有效。
以下是我的 CreateNewAccount 和 UInfoRetrieveModel 代码,其中的转移似乎不起作用:
UInfoRetrieveModel->
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 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.retrieving()
uInfoRetrieve.delegate = self
}
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)
}
}
【问题讨论】:
-
您需要告诉我们正在发生的事情以及应该发生的事情。 Edit您的问题及相关细节。
-
如果thanksForJoining 是通过按下按钮调用的,那么uInfoRetrieve 应该包含按下它之后的值。您没有看到任何打印,因为据我所知,没有人调用 retrieving()。
-
@rmaddy 我编辑了我对问题的解释
-
@ErikZivkovic 我尝试添加 retrieving() ,但我仍然没有得到数据传输
-
@ErikZivkovic 我无法给它+1,因为我的“声誉”低于 15,但我刚刚批准了它。谢谢。
标签: swift xcode model-view-controller