通过Ucodeutton在Xcode 6和Swift
问题描述:
两个视图控制器(模态)之间争论所以我正在练习iOs编程,我似乎无法找到解决我的问题。我有一个“loginViewController”,我希望我的UIButton“Creer un compte”模态地呈现我的“注册”视图控制器。这里是这个问题,当我启动模拟器时,我点击按钮,它崩溃并将我带到AppDelegate的第一行,通过Ucodeutton在Xcode 6和Swift
“class AppDelegate:UIResponder,UIApplicationDelegate,Thread1 signal SIGABRT。”
我通过控制拖动我的UIButton到注册视图控制器做了segue。
下面是代码:
import UIKit
类LoginViewController:UIViewController的{
@IBOutlet weak var LoginScreenImage: UIImageView!
@IBOutlet weak var codeTextField: UITextField!
@IBOutlet weak var nipTextField: UITextField!
@IBAction func showRegisterPage(sender: AnyObject) {
let registerViewController = self.storyboard?.instantiateViewControllerWithIdentifier("RegisterViewController") as RegisterViewController
self.showViewController(registerViewController, sender: self)
}
let client = Client.sharedInstance
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
LoginScreenImage.image = UIImage(named: "UQAMLOGO")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func connect() {
let code = codeTextField.text
let nip = nipTextField.text
if code != nil && nip != nil {
client.login(code, password: nip, callback: { (response) in
if let response = response {
if response.status == LoginStatus.Ok {
// Good login.
let homeViewController = self.storyboard!.instantiateViewControllerWithIdentifier("HomeViewController") as HomeViewController
self.showViewController(homeViewController, sender: self)
}
} else {
// Error
}
})
}
}
}
和RegisterViewController:
import UIKit
类RegisterV iewController:{的UIViewController
@IBOutlet weak var firstNameTextField: UITextField!
@IBOutlet weak var lastNameTextField: UITextField!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
let client = Client.sharedInstance
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func register() {
let firstName = firstNameTextField.text
let lastName = lastNameTextField.text
let email = emailTextField.text
let password = passwordTextField.text
if(firstName != nil && lastName != nil && email != nil && password != nil){
client.register(email, password: password, firstName: firstName, lastName: lastName, callback: {(response) in
if let response = response{
if response.status == RegisterStatus.Ok{
let loginViewController = self.storyboard!.instantiateViewControllerWithIdentifier("LoginViewController") as LoginViewController
self.showViewController(loginViewController, sender: self)
}
}else{
//erreur
}
})
}
}
}
我试图以编程方式做到这一点,试图将viewControllers重置为默认类别(UIViewController的)。
感谢大家的帮助,
查尔斯
答
当你从一个按钮到另一个控制器SEGUE,而不需要任何代码执行SEGUE - 你应该删除showRegisterPage方法。我不确定这是否是您唯一的问题,但您应该删除该方法,然后查看是否仍然出现错误。
嗨rdelmar,我只是试图删除它,它仍然无法正常工作。 – cvinette 2015-03-02 21:09:19
@cvinette,它执行segue,还是在发生这种情况之前崩溃? – rdelmar 2015-03-02 23:09:38
它发生之前崩溃。我试图将同一个按钮绑定到另一个视图,并且没有问题。但是,只要我拖动它,以便它执行一个模态赛格,它就会崩溃并将我带到appdelegate。 – cvinette 2015-03-02 23:38:32