【发布时间】:2017-10-31 01:48:26
【问题描述】:
说明我想做什么:
- 我想创建一个 let params : [String: AnyObject] 包含 [ 名称的数组/Dic :nameTextField.text,pass:passTextField.text等...]合二为一 ViewController 称为 "SignUpVC"
也在 "SignUpVC" 内部我想要一个协议来保存我的值 params 和“save”它们以供以后在其他 ViewControllers 中使用。不使用 NSUserDefaults。
现在这些 params 被保存并分配给 协议的 函数的参数,我想进入另一个名为 “SchoolSelectionVC”并调出这些值并分配 params 到 var newParams : [String : AnyObject] 因此它们相等,但如果出现以下情况,则无法更改某些值 我想...
所以基本上,我正在尝试使用来自 SignUpVC 的用户输入来分配一些值,保存这些值,并将它们带到另一个 ViewController 中的另一个变量以供进一步使用或更改。
问题:
下面是我的代码,它表明我正在创建一个 SignUpVC 协议,一个名为“var signupDelegate = SignUpVCProtocol”的委托,一个 let 参数,为其赋值,尝试将 let 参数 分配给 SignUpVC 协议参数,然后移动到另一个 ViewController ("SchoolSelectionVC" ),但错误将其停在那里。这一切都发生在 SignUpVC 内的按钮单击操作中。
我只想知道为什么当我尝试将参数传递给它时,持有 SignUpVCProtocol 及其函数的委托变量会给我一个错误。
如果有任何关于如何将值从一个 VC 保存到另一个的提示,请告诉我,如果我的任何代码需要更多解释,也请告诉我!
代码:
protocol SignUpVCProtocol {
func logInData(params : [String : AnyObject])
}
class SignUpVC: UIViewController{
//MARK:- @IBOutlet
//MARK: ^^^^^^^^^^^^^^^^^^^^
@IBOutlet var signUpWithFacebookButton: UIButton!
//MARK:- Properties
//MARK: ^^^^^^^^^^^^^^^^^^^^
var selectedTextField : UITextField!
var keyboardPresent = false
var loginFlag = false
var fbId: String!
var picUrl: String!
var schoolID : String = ""
var schoolDict : [String:AnyObject]!
var player: AVPlayer?
var fbData : AnyObject!
let domainLbl = UILabel()
var signUpDelegate : SignUpVCProtocol! //Delegate var for Protocol
在按钮操作内:
let params = [
"Action" : "signUp" as AnyObject,
"name" : self.nameTextField.text! as AnyObject,
"email" : "\(self.emailTextField.text!)" as AnyObject,
"password" : self.passwordTextField.text! as AnyObject,
"school" : self.schoolTextField.text! as AnyObject,
"device_token" : sharedAppdelegate.DeviceToken as AnyObject,
"device_type" : "iphone" as AnyObject,
"school_id" : self.schoolID as AnyObject
]
self.signUpDelegate.logInData(params: params) //!!Where i want to assign the above params to the protocol params for use in SchoolSelectionVC
//ERROR HAPPENS RIGHT ABOVE^^
let schoolVC = self.storyboard?.instantiateViewController(withIdentifier: "SchoolSelectionVC") as! SchoolSelectionVC
let navVC = UINavigationController(rootViewController: schoolVC)
navVC.isNavigationBarHidden = true
schoolVC.delegate = self
self.present(navVC, animated: true, completion: nil)
//in another VC Class
extension SchoolSelectionVC: SignUpVCProtocol
{
func logInData(params: [String : AnyObject]) {
self.newParams = params as! [String : String]
}
}
【问题讨论】:
标签: swift dictionary delegates protocols viewcontroller