Swift 3在UIAlert之后从Struct中解散

时间:2017-06-08 17:58:54

标签: swift swift3 uiviewcontroller dismiss

仍然是Swift的新手并试图解决我现在面对的一些问题...... :) 现在我创建了一个Struct来管理用户登录,注册并恢复passowrd ......

所以这里代码的一部分让我发疯了......

struct NetworkingService {

var dataBaseRef: FIRDatabaseReference!{
    return FIRDatabase.database().reference()
}
var storageRef: FIRStorageReference {
    return FIRStorage.storage().reference()
}
--------------------------------------------
// Reset Password
 func resetpassword(email: String){
    FIRAuth.auth()?.sendPasswordReset(withEmail: email, completion: { (error) in
        if error == nil{
            let alertView = UIAlertController(title: "SUCCESS!", message: "We have sent an email to \(email) with the information on how to reset your password. Thank you!", preferredStyle: UIAlertControllerStyle.alert)
            alertView.addAction(UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in

            })
            UIApplication.shared.keyWindow?.rootViewController?.present(alertView, animated: true, completion: nil)

        } else{
            let alertView = UIAlertController(title: "Error!", message: "Error:\(error!.localizedDescription)", preferredStyle: UIAlertControllerStyle.alert)
            alertView.addAction(UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in

            })
            UIApplication.shared.keyWindow?.rootViewController?.present(alertView, animated: true, completion: nil)
        }
    })
}

在我的控制器中我有一个简单的按钮,可以调用此函数

ResetPasswordVC{
@IBOutlet weak var emailTextField: UITextField!

var networkingService = NetworkingService()

override func viewDidLoad() {
    super.viewDidLoad()
}
 @IBAction func resetPasswordPressed(_ sender: Any) {
    networkingService.resetpassword(email: emailTextField.text!)
}

我想要做的是解除视图并在用户成功重置密码后返回到之前的viewController(基本上如果没有错误并且他已在警报上点击了确定。

问题:不能在结构中使用dismiss。我尝试了多种解决方案,但没有一种方法有效.... 试过这个:

    let storyBoard = UIStoryboard(name: "Main", bundle: nil)
    let loginVC = storyBoard.instantiateViewController(withIdentifier: "LoginVC") as! LoginVC
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.window?.rootViewController = loginVC

但是我不能使用任何动画(因此效果真的很难看)而真正的问题是LoginVC是一个标签视图,当我像这样回来时,底部的标签栏就不会显示...... 我已经失去了将近一整天......而且我真的不知道还有什么可以尝试...... 希望可以有人帮帮我! 附:如果我写了一些愚蠢的东西......请原谅我......就像我说我是新手......:D

THX!

1 个答案:

答案 0 :(得分:0)

之前我遇到过类似的问题,你需要做的是显示Tabbar控制器并正确设置它的标签,而不是只显示LoginVC,否则就像你找到的那样,底部的标签栏将会消失