2016-03-14 4 views
1

Я пытаюсь изменить контроллер представления, если вход успешно, но я не уверен, как это сделать. Это то, что я пробовал до сих пор. Заранее спасибо!Открыть новый контроллер представления после входа в систему оповещения swift 2.0

@IBAction func signinaction(sender: AnyObject) { 
    let user = self.usernamefield.text! 

    ref.authUser(emailfield.text, password: passwordfield.text, withCompletionBlock: { error, authData in 

     if error != nil 
     { 
      let alert = UIAlertController(title: "Error", message: "Enter Email and Password.", preferredStyle: UIAlertControllerStyle.Alert) 
      let action = UIAlertAction(title: "Ok", style: .Default, handler: nil) 
      alert.addAction(action) 
      self.presentViewController(alert, animated: true, completion: nil) 
      print("can not sign in") 
     } 
     else 
     { 

      let storyboard = UIStoryboard(name: "Main", bundle: nil); 
      let viewName:NSString = "NewView" 
      let vc = storyboard.instantiateViewControllerWithIdentifier(viewName as String) as! HomeViewController 
      let uid = authData.uid 
      print("Success with user: \(uid)") 
      let alert = UIAlertController(title: "Success", message: "Welcome \(user)", preferredStyle: UIAlertControllerStyle.Alert) 
      let action = UIAlertAction(title: "Ok", style: .Default, handler: nil) 
      alert.addAction(action) 
      self.navigationController?.pushViewController(vc as HomeViewController, animated: true) 

     } 

    }) 
} 

ответ

0

Предполагая, что контроллер вида все это находится в контроллере навигации, то, что у вас есть, должно работать нормально. Обратите внимание, однако, что вы создаете предупреждение, которое вы никогда не показываете. Я предполагаю, что вы хотите, чтобы отобразить предупреждение успеха, а затем открыть новый контроллер представления, что-то вроде:

  let alert = UIAlertController(title: "Success", message: "Welcome \(user)", preferredStyle: UIAlertControllerStyle.Alert) 
      let action = UIAlertAction(title: "Ok", style: .Default) { _ in 
       self.navigationController?.pushViewController(vc, animated: true) 
      } 
      alert.addAction(action) 

      self.presentViewController(alert, animated: true, completion: nil) 

Если это все еще не работает, я бы убедиться, что текущий контроллер представления фактически отображается в навигационный контроллер.

0

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

это

let action = UIAlertAction(title: "Ok", style: .Default, handler: nil) 

становится этим

let alertAction = UIAlertAction(title: "Ok", style: .Default) { (action) -> Void in 
     self.navigationController?.pushViewController(vc as HomeViewController, animated: true) 

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