ios - 解析 - 如何在 View 加载之前检查登录用户?

标签 ios swift parse-platform viewdidload viewdidappear

我试图在决定是否显示登录/注册 View Controller 或登录 View Controller 之前验证是否存在用户。我遇到的问题是,要检查用户是否存在,我必须等待 viewDidAppear,因为由于某种原因,如果我运行,用户总是 nil viewDidLoad 中的检查。

我正在为我的用户系统使用 Parse,但我不确定这是否是问题的一部分。下面的代码工作正常,除了在执行 if(PFUser.currentUser() != nil) 行之前瞬间加载 ViewController 的 View 。

我希望能够在 viewDidLoad 中运行用户检查,这样 View 就不必实际出现,但如果我这样做,用户总是返回 nil

我尝试在登录/注册屏幕之前添加一个空白 View Controller ,但这只会加载一秒钟的白色屏幕。我尝试在 Storyboard启动屏幕中执行此操作,但这是不允许的(我相信有充分的理由),并且我可以创建一个作为启动屏幕副本的 View 并从那里运行它,但这似乎有点像黑客。

执行此操作的正确方法是什么?我认为这是大多数应用程序中常见的做法,我只是不知道在哪里执行该 if 语句。

import UIKit
import Parse

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        if (PFUser.currentUser() != nil) {
            let vc = self.storyboard!.instantiateViewControllerWithIdentifier("summaryView")
            self.presentViewController(vc, animated: true, completion: nil)
        }
    }
}

最佳答案

您可以将代码放入 application(_:, didFinishLaunchingWithOptions:) 中。

if let user = PFUser.currentUser() {
    // Code to execute if user is logged in
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let viewController = storyboard.instantiateViewControllerWithIdentifier("VCIdentifier") 

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

} else {
    // Default screen you set in info plist.
}

关于ios - 解析 - 如何在 View 加载之前检查登录用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34190411/

相关文章:

ios - 如何使用 Swift 2 从 xib 加载自定义 UIView?

java - 将类类型传递给方法

ios - 带有 CGColorSpaceCreateDeviceRGB 的代码无法编译

ios - NsDate 格式化程序从字符串中给出错误的日期

ios - 将不同的数据和不同长度的项目分配给 UITableView 内的 UICollectionView

ios - 从同时加载的TableViewController访问ViewController socket

Swift:解包选项变量的方式不同

ios - 从 URL 下载图像并作为图像添加到数组

arrays - Swift:在(Parse 查询结果的)数组中搜索并随机选择,但优先考虑较新的对象?

ios - 如何快速将一个应用程序嵌入到另一个应用程序