如何最好地删除所有UIViewcontrollers并转到单个UIViewController?

时间:2018-12-11 09:23:53

标签: ios swift

我有一个可以更改用户密码的应用程序。重置密码过程全部通过Web链接完成。该过程完成后,用户将返回其应用程序。鉴于密码现已更改,我想注销用户。

当用户向服务器请求信息时,我的服务器代码将以自定义代码响应,以使应用程序知道密码已更改,从而完成此操作。在这种情况下,代码为“ 177”。 我试图为用户提供“登录” uiviewcontroller-但没有成功。屏幕只是冻结。有人可以请教吗?

if code == 177{
                // INVALID API KET USED. LOG USER OUT
                print("INVALID API KET USED. LOG USER OUT")

                GlobalFunction.logout(action: {
                    // GO TO LOGIN VIEWCONTROLLER
                    print("GO TO LOGIN PAGE")
                    let loginVC = self.storyboard?.instantiateViewController(withIdentifier: "login") as! MyLoginViewController
                    self.present(loginVC, animated: true, completion: nil)
                })

                return
            }

第二堂课:

class GlobalFunction{

// LOG USER OUT OF APPLICATION
static func logout(action: @escaping (() -> ())){
    // Remove logged in user credentials
    UserDefaults.standard.removeObject(forKey: "userId")
    UserDefaults.standard.removeObject(forKey: "firstname")
    UserDefaults.standard.removeObject(forKey: "firstname")
    UserDefaults.standard.removeObject(forKey: "api_key")
    UserDefaults.standard.synchronize()

    print("user logged out")
}


}

1 个答案:

答案 0 :(得分:1)

确保必须在主线程上运行UI事件。

DispatchQueue.main.async {
    let loginVC = self.storyboard?.instantiateViewController(withIdentifier: "login") as! MyLoginViewController
    self.present(loginVC, animated: true, completion: nil)
}