代码之家  ›  专栏  ›  技术社区  ›  Grodriguez

如何模拟返回到尚未显示的ViewController

  •  0
  • Grodriguez  · 技术社区  · 5 年前

    presentViewController dismiss 返回登录屏幕的当前(主)视图控制器。这可以很好地工作,并使用标准动画“以模态呈现”。

    现在我想修改它,以便如果用户已经登录,则跳过登录屏幕。因此,在我的应用程序委托中,我执行以下操作(伪代码)

    if (user logged in)
       presentViewController(mainVC)
    else
       presentViewController(loginVC)
    

    问题:如果用户已经登录,并且我直接显示主视图控制器,则我无法再“取消”它以返回登录视图控制器(因为从未显示过)。然后如何“模拟”返回登录VC?

    https://developer.android.com/training/implementing-navigation/temporal ). iOS中是否有类似的东西?

    2 回复  |  直到 5 年前
        1
  •  0
  •   Pratik Sodha    5 年前

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    
    
    if isUserLoggedIn {
            //Set Main ViewController
            self.window?.showAuthenticationVC
    
        } else {
            //Optional.. But you can set here Logic VC
            self.window?.showMainController()
        }
        return true
    }
    

    isUserLoggedIn 是否管理用户日志的标志。您可以将该值存储在 UserDefaults .

    extension UIWindow {
    
    
    
     func showAuthenticationVC() {
    
            self.makeKeyAndVisible()
            let authenticationVC : LoginController = LoginController()
            let navigationController = UINavigationController(rootViewController: authenticationVC)
            self.rootViewController = navigationController
    
        }
    
        func showMainController() {
            self.makeKeyAndVisible()
            let authenticationVC : MainController = MainController()
            let navigationController = UINavigationController(rootViewController: authenticationVC)
            self.rootViewController = navigationController
        }
    
    }
    

    以及在登录操作时。设置 showMainController() window . 与注销呼叫时相同 showAuthenticationVC() 使用 AppDelegate的属性。

    希望对你有帮助!

        2
  •  0
  •   HAK    5 年前

    这种问题我已经面对过好几次了。我处理它的方式是在应用程序的开头使用一个虚拟VC,命名为StartupVC。在StartupVC中,我添加了检查用户是否登录的逻辑。如果用户已登录,我会将其发送到主屏幕。如果没有,我将显示登录屏幕。

    现在,当用户注销时,我将视图控制器弹出到StartupVC。在启动VC时,我输入了登录检查登录 viewWillAppear

    要使过渡平滑,您可以在注销后导航回登录时关闭动画。