gpt4 book ai didi

ios - 在 View 可见之前执行 Segue

转载 作者:可可西里 更新时间:2023-11-01 00:51:56 24 4
gpt4 key购买 nike

我有两种看法

ViewController-> Main view
LoginVC -> LogIn View

我的初始 View 是包含按钮和一些文本的 ViewController。

我想要实现的目标

如果用户尚未登录,则执行将 View 转移到登录的 segue。

我做了什么

在我的 ViewController 中,我检查了 USER_ID 是否为 nil,如果为 nil,那么我将执行 segue。

 override func viewWillAppear(animated: Bool) {
if Globals.USER_ID == nil{
self.performSegueWithIdentifier("goto_login", sender: nil)
// dispatch_async(dispatch_get_main_queue(), {
// self.performSegueWithIdentifier("goto_login", sender: nil)
// })
}
}

我的问题是什么

我的问题是我是否使用 viewWillAppear 或 viewDidLoad 或 viewDidAppear 将 View 从 ViewController 传输到 LoginVC。ViewController 将在登录屏幕出现之前的一秒钟内可见我想摆脱它。有人可以帮我解决这个问题吗。

最佳答案

我的应用程序具有相同的功能。我通过检查 AppDelegate.swift 中的 userID 函数 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 来实现它

因此,删除 segue,您修改后的代码将如下所示:

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())

if Globals.USER_ID == nil{
let loginScreen = storyBoard.instantiateViewControllerWithIdentifier("LoginVC")
self.window?.rootViewController = loginScreen

}else{
let mainScreen = storyBoard.instantiateViewControllerWithIdentifier("ViewController")
self.window?.rootViewController = mainScreen
}
return true
}

这样你就不需要像viewDidLoad(), viewDidAppear() or viewWillAppear()这样的方法用于这个目的。

作为此答案的补充 - 在注销发生后再次使用 AppDelegate 的实例。例如,您应该在注销方法中执行以下操作:

func logout() {
if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
Globals.USER_ID = nil
appDelegate.window?.rootViewController = loginScreen
}
}

这样您就可以在用户注销后清除用户 ID 并导航回登录屏幕。

关于ios - 在 View 可见之前执行 Segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34625118/

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