gpt4 book ai didi

ios - Swift - 如果用户已经登录,为什么在重定向用户时我应该使用 viewDidAppear 而不是 viewWillAppear

转载 作者:行者123 更新时间:2023-11-30 11:07:23 24 4
gpt4 key购买 nike

我正在使用 TwitterKit 制作 Twitter 客户端应用程序。

初始 VC 是带有登录按钮的 loginVC。登录后,它会呈现 tableviewVC,其中显示推文列表。

如果用户之前已经登录并且 session 仍然存在,我想将用户直接重定向到 tableviewVC。

因此,我在 viewWillAppear 中实现了检查登录用户并显示 tableviewVC 的代码,但尽管用户 session 仍然存在,但 tableviewVC 从未显示。

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if TWTRTwitter.sharedInstance().sessionStore.hasLoggedInUsers() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tweetVC = storyboard.instantiateViewController(withIdentifier: "TweetTableViewController")
present(tweetVC, animated: true, completion: nil)
}
}

但是当我在 viewDidAppear 中实现相同的代码时,当用户 session 保持时,tableviewVC 就会出现。

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if TWTRTwitter.sharedInstance().sessionStore.hasLoggedInUsers() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let tweetVC = storyboard.instantiateViewController(withIdentifier: "TweetTableViewController")
present(tweetVC, animated: true, completion: nil)
}
}

我不明白为什么当代码在 viewWillAppear 中时它不起作用。

有人可以帮我解释一下吗?

最佳答案

正如方法名称所解释的,

viewWillApper 表示当前 viewController 的 View 将出现,但仍然不在窗口上。因此,在这种情况下,您无法在窗口中未显示的 viewController 上呈现任何 viewController。

viewDidApper 表示当前 viewController 的 View 正在窗口上显示,这就是您能够呈现新 viewController 的原因。

PS:正如您想要实现的那样,在已经登录的情况下显示 listVC。我建议在 AppDelegatedidFinishLaunchingWithOptions 方法中设置窗口的 rootViewController

喜欢:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

var rootVC: UIViewController?
if <check weather user is already logged in> {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
rootVC = storyboard.instantiateViewController(withIdentifier: "TweetTableViewController")
}
else {
rootVC = <you loginVC object>
}

self.window?.rootViewController = rootVC
self.window?.makeKeyAndVisible()


return true
}

关于ios - Swift - 如果用户已经登录,为什么在重定向用户时我应该使用 viewDidAppear 而不是 viewWillAppear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52557993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com