UIAlert后Swift 3从结构中解聘

UIAlert后Swift 3从结构中解聘,swift,swift3,uiviewcontroller,dismiss,Swift,Swift3,Uiviewcontroller,Dismiss,对斯威夫特来说还是个新手,我时不时地会遇到一些问题,试图回避这些问题……:) 现在我已经创建了一个结构来管理用户登录、注册和恢复passowrd 这部分代码让我抓狂 struct NetworkingService { var dataBaseRef: FIRDatabaseReference!{ return FIRDatabase.database().reference() } var storageRef: FIRStorageReference { return FI

对斯威夫特来说还是个新手,我时不时地会遇到一些问题,试图回避这些问题……:) 现在我已经创建了一个结构来管理用户登录、注册和恢复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)
        }
    })
}
在我的控制器中,我有一个简单的按钮,叫做func

ResetPasswordVC{
@IBOutlet weak var emailTextField: UITextField!

var networkingService = NetworkingService()

override func viewDidLoad() {
    super.viewDidLoad()
}
 @IBAction func resetPasswordPressed(_ sender: Any) {
    networkingService.resetpassword(email: emailTextField.text!)
}
我试图做的是在用户成功重置密码后(基本上是在没有错误并且他在警报上单击了ok的情况下),关闭视图并返回到上一个viewController

问题:无法在结构中使用Disclose。我尝试了多个解决方案,但均无效。。。。 我试过这个:

    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!

我以前遇到过类似的问题,你需要做的是显示Tabbar控制器并正确设置它的选项卡,而不是只显示LoginVC,否则,底部的Tabbar将消失

Thx以获得答案…但是像那样,我仍然没有得到动画…有办法添加它吗?不幸的是,没有t直接。我可能建议的是有一个弹出窗口,它只是一个加载轮,然后在切换视图后将其删除。但是,还有许多其他方式来显示动画(Y)。如果我这样做…它会显示第一个选项卡…我正试图显示回登录,这是我的第三个选项卡(前两个只是一些带有新闻的表格)没问题,你可以做tabbar.selectedIndex=2(或从0开始的任何索引),其中tabbar是你的UITabBarController。太棒了!它工作了…我不知道它!thx!现在我将考虑如何添加动画,它是完美的!:)thx!