Быстрое перенаправление входа в систему с помощью mmdrawer
У меня возникла проблема с моим перенаправлением после того, как пользователь вошел в систему. Я использую mmdrawer, поэтому мне нужно инициировать его, чтобы левое и правое меню отображались на следующей странице, а также перенаправлять пользователя. Однако ничего не происходит. Раньше у меня было решение, которое перенаправляло участника, но ломало приложение, и оно зависало. Я использую следующий код, чтобы попытаться перенаправить пользователя и инициировать перенаправление. Он работает, когда я использую его на других контроллерах представления, как код в ibaction, и работает как надо.
var centerViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Memberarea") as! userOverview
var centerNavController = UINavigationController(rootViewController: centerViewController)
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.centerContainer!.centerViewController = centerNavController
Он работает как обычно, но не в коде, который я использую ниже. Я использую это в следующем коде.
import UIKit
class LoginPage: UIViewController, UITextFieldDelegate {
@IBOutlet weak var txtUsername: UITextField!
@IBOutlet weak var txtPassword: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func signinTapped(sender: UIButton) {
var username:NSString = txtUsername.text
var password:NSString = txtPassword.text
var database:NSString = "bfdlogin" as NSString
if ( username.isEqualToString("") || password.isEqualToString("") ) {
var alertView:UIAlertView = UIAlertView()
alertView.title = "Sign in Failed!"
alertView.message = "Please enter Username and Password"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
} else {
var post:NSString = "username=\(username)&password=\(password)&database=\(database)"
NSLog("PostData: %@",post);
var url:NSURL = NSURL(string: "xxxxxxxxx")!
var postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!
var postLength:NSString = String( postData.length )
var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.HTTPBody = postData
request.setValue(postLength as String, forHTTPHeaderField: "Content-Length")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
var reponseError: NSError?
var response: NSURLResponse?
var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)
if ( urlData != nil ) {
let res = response as! NSHTTPURLResponse!;
NSLog("Response code: %ld", res.statusCode);
if (res.statusCode >= 200 && res.statusCode < 300)
{
var responseData:NSString = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!
NSLog("Response ==> %@", responseData);
var error: NSError?
let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as! NSDictionary
let success:NSInteger = jsonData.valueForKey("success") as! NSInteger
//[jsonData[@"success"] integerValue];
NSLog("Success: %ld", success);
if(success == 1)
{
NSLog("Login SUCCESS");
var prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
prefs.setObject(username, forKey: "USERNAME")
prefs.setInteger(1, forKey: "ISLOGGEDIN")
prefs.synchronize()
var alertView:UIAlertView = UIAlertView()
alertView.title = "Aanmelden Succesvol"
alertView.message = "Klik ok om verder te gaan"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
var centerViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Memberarea") as! userOverview
var centerNavController = UINavigationController(rootViewController: centerViewController)
var appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.centerContainer!.centerViewController = centerNavController
} else {
var error_msg:NSString
if jsonData["error_message"] as? NSString != nil {
error_msg = jsonData["error_message"] as! NSString
} else {
error_msg = "Unknown Error"
}
var alertView:UIAlertView = UIAlertView()
alertView.title = "Sign in Failed!"
alertView.message = error_msg as String
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
}
} else {
var alertView:UIAlertView = UIAlertView()
alertView.title = "Sign in Failed!"
alertView.message = "Connection Failed"
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
}
} else {
var alertView:UIAlertView = UIAlertView()
alertView.title = "Sign in Failed!"
alertView.message = "Connection Failure"
if let error = reponseError {
alertView.message = (error.localizedDescription)
}
alertView.delegate = self
alertView.addButtonWithTitle("OK")
alertView.show()
}
}
}
//function to hide the keyboard when tapping outside a text field
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true;
}
//hide keyboard when tapping outside a field
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
}
Я понятия не имею, что происходит не так и почему он не хочет инициировать перенаправление. Старый код, который является увеличенной версией mmdrawer, который у меня есть в моем appdelegate, действительно перенаправляет, но приложение вылетает. Как я могу решить это. Я все еще довольно новый Свифт.
Благодарю.