【发布时间】:2015-08-03 09:01:36
【问题描述】:
我想在没有 segues 帮助的情况下将一个 Bool 值从视图控制器传递到另一个。所以我推荐并得到了代表。
我已在我的应用中应用了委托。但是没有调用 Delegate 方法。我不知道我在哪里犯了错误。
所以请帮帮我。
MainViewController
class MainViewController: UIViewController, WriteValueBackDelegate {
@IBOutlet weak var LoginButton: UIButton!
var LoggedInL :Bool?
override func viewDidLoad() {
super.viewDidLoad()
}
func writeValueBack(value: Bool) {
println("Delegate Method")
if (value == true){
LoginButton.setTitle("My Profile", forState:UIControlState.Normal)
}
}
第二个视图控制器
class LoginController: UIViewController {
@IBOutlet weak var LoginLabel: UILabel!
@IBOutlet weak var email: UITextField!
@IBOutlet weak var pwd: UITextField!
var LoggedInL :Bool?
var mydelegate: WriteValueBackDelegate?
override func viewDidLoad() {
super.viewDidLoad() }
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func onSubmit(sender: AnyObject) {
Alamofire.request(.GET, "http://www.jive.com/index.php/capp/user_verification/\(email.text)/\(pwd.text)")
.responseJSON { (_, _, data, _) in
println(data)
let json = JSON(data!)
let name = json["first_name"].stringValue
let status = json["valid_status"].intValue
println(status)
var e = self.email.text
println(e)
self.LoginLabel.text = "Hey \(name)!"
if status == 1{
println("Correect")
self.LoggedInL = true
self.mydelegate?.writeValueBack(true)
}else {
self.LoggedInL = false
println("Error")
}
}
navigationController!.popViewControllerAnimated(true)
}
}
protocol WriteValueBackDelegate {
func writeValueBack(value: Bool)
}
【问题讨论】:
-
从 self.mydelegate?.writeValueBack(true) 更改为 self.mydelegate!.writeValueBack(true),如果应用程序崩溃,那么你没有初始化 self.mydelegate (:
-
您是否尝试过
NSUserDefaults将您的布尔值从一个视图传递到另一个视图?
标签: swift delegates swift-protocols