2016-10-21 1 views
1

Я создал приложение, в котором мне нужно войти в систему двумя способами: - Facebook Login, - Обычный вход (адрес электронной почты, пароль).SWRevealViewController segue застрял только с 1 кнопкой

Я добавил FBLogin с Facebook SDK и изменил кнопку, чтобы не использовать кнопку fb по умолчанию. Я добавил segue (Present Modally) из моего loginView в anotherView с помощью segue (называемый «fb_login») и установил класс segue в «SWRevealViewControllerSeguePushController».

Теперь я делаю то же самое с моей кнопкой входа в систему. изменил идентификатор и установил класс 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)

ответ

0

Проблема возникает из-за того, что вы пытаетесь манипулировать пользовательским интерфейсом из фонового потока. Вы всегда должны выполнять манипуляции с пользовательским интерфейсом только в основном потоке.

Попробуйте с:

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

yesssss !!!! Это сработало! Спасибо вам @ Midhun MP! –

+0

@CarloDiDomenico: Добро пожаловать. Рад слышать, что это помогло вам решить проблему. Счастливое кодирование !!! –

Смежные вопросы