菜鸟教程小白 发表于 2022-12-11 18:11:16

ios - 如何在ios中维护登录 session ?


                                            <p><p>我想知道我需要在应用程序编程中更改 Root ViewController 的位置。下面是我的代码</p>

<pre><code>class NavigationViewController: UINavigationController {

var window: UIWindow?

override func viewDidLoad() {
    super.viewDidLoad()

    let storyBoard = UIStoryboard(name: &#34;Main&#34;, bundle: nil)
    let newRootView = storyBoard.instantiateViewController(withIdentifier: &#34;WelcomeViewController&#34;) as! WelcomeViewController
    let userStatus = UserDefaults.standard.bool(forKey: &#34;isLoggedIn&#34;)
    if userStatus {
      self.window?.rootViewController = newRootView
    }

}
}
</code></pre>

<p>我在用户登录时将 isLoggedIn 键的值设置为 true,在用户注销时设置为 false,以便我可以在此导航 Controller 子类中检索值,基于此我可以选择 Root ViewController 。但它不能正常工作,每当我启动应用程序时,它仍然保持不变,尽管我已经登录,但我只获得登录页面,也请不要建议我在 didfinishlaunchingwithoptions 方法中更改 Root ViewController 。有人可以帮我解决吗?提前致谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果我正确理解您的代码目标,如果用户已经登录,您希望直接在 <code>WelcomeViewController</code> 上启动。</p>

<p>您可以尝试创建一个名为 <code>ReplaceSegue</code> 的自定义 segue,并将此 <code>ReplaceSegue</code> 设置为链接 <code>NavigationViewController</code> 和 <code>ViewController 的 segue </code>。 </p>

<p>然后你可以改变你的转场的目的地。</p>

<pre><code>class ReplaceSegue: UIStoryboardSegue {

    override func perform() {
      let storyBoard = UIStoryboard(name: &#34;Main&#34;, bundle: nil)
      let newRootView = storyBoard.instantiateViewController(withIdentifier: &#34;WelcomeViewController&#34;) as! WelcomeViewController
      sourceViewController.navigationController?.setViewControllers(, animated: true)
    }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何在ios中维护登录 session ?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/44924322/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/44924322/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何在ios中维护登录 session ?