SWRevealViewController segue只能用1个按钮卡住

时间:2016-10-21 18:35:57

标签: ios swift swift3 swrevealviewcontroller

我创建了一个应用程序,我需要以两种方式登录: - Facebook登入, - 正常登录(电子邮件,密码)。

我已经在Facebook SDK中添加了FBLogin并修改了一个按钮,以便不使用fb默认按钮。我已经从我的loginView添加了一个segue(Present Modally)到带有segue的另一个视图(称为“fb_login”),并将segue类设置为“SWRevealViewControllerSeguePushController”。

现在,我使用LogIn按钮做同样的事情。更改了标识符并设置了segue类,但是当我按下它时我的应用程序卡住(在xCode上没有错误)所以我需要关闭它并重新打开它。

我试图将segue类型从“Preset Modally”更改为“显示视图控制器设置控制器”,但没有任何改变(它不会卡住,但它不起作用)。

这是按下登录按钮的功能:

@IBAction func loginButtonPressed(_ sender: UIButton) {
    var email = emailTextField.text
    var password = passwordTextField.text
    let urlString = "..."

    let urlwithPercentEscapes = urlString.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)


    let url = URL(string: urlwithPercentEscapes!)
    URLSession.shared.dataTask(with:url!, completionHandler: {(data, response, error) in
        if error != nil {
            print(error)
        } else {
            do {
                //PARSEDDATA CONTIENE TUTTE LE TUPLE
                let parsedData = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! NSDictionary
                let temp = parsedData["user"] as! NSArray
                var userLogin = temp[0] as! NSDictionary
                if((userLogin["login"]) as! Int == 1){ //login successfully
                    self.user.name = userLogin["name"]! as! String
                    self.user.surname = userLogin["surname"]! as! String
                    self.user.email = userLogin["email"]! as! String
                    self.user.url_image = userLogin["profile_img_url"]! as! String
                    self.user.id_user = Int(userLogin["id_user"]! as! String)!
                    self.user.gender = Int(userLogin["gender"]! as! String)!
                    self.user.birthday = userLogin["birthday"]! as! String
                    self.user.id_license = userLogin["id_license"]! as! String
                    self.user.registration_date = userLogin["registration_date"]! as! String
                    self.user.expire_date = userLogin["expire_date"]! as! String
                    self.user.mac_address = userLogin["mac_address"]! as! String
                    self.user.license_key = userLogin["license_key"]! as! String
                    self.user.license_type = Int(userLogin["license_type"]! as! String)!
                    sleep(2)
                    self.performSegue(withIdentifier: "normal_login", sender: nil)
                }else{ //login failed
                    print("login failed")
                }


            } catch let error as NSError {
                print(error)
            }
        }

    }).resume()
}
谢谢大家! (我正在使用Swift 3.0)

1 个答案:

答案 0 :(得分:0)

问题正在发生,因为您正在尝试从后台线程操纵UI。您应该始终只在主线程上进行与UI相关的操作。

尝试:

DispatchQueue.main.async
{
    self.performSegue(withIdentifier: "normal_login", sender: nil)
}