如果当前用户不是nil,我正在努力绕过登录屏幕。为此,我遵循了here发布的建议。运行代码后,我在模拟器中看到一个空白的白色视图,没有显示任何错误。这是代码:
storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle());
let currentUser = PFUser.currentUser()
print(currentUser)
if currentUser != nil {
self.window?.rootViewController = storyboard?.instantiateViewControllerWithIdentifier("HomeViewController");
}
值得一提的是HomeViewController基于Tab导航。我错过了什么?
我的设置是:
答案 0 :(得分:4)
我假设您的主标签栏控制器具有标识符"HomeViewController"
,并且您的登录视图控制器具有标识符"SignInViewController"
,并且此代码位于您的didFinishLaunchingWithOptions()
AppDelegate方法中:
storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
if let currentUser = PFUser.currentUser() { // currentUser is not nil
// set up app for valid in user
self.window?.rootViewController = storyboard?.instantiateViewControllerWithIdentifier("HomeViewController")
return true // don't load the rootViewController from your storyboard (if you have an initial view set)
} else { // there is no current user
// set up app for new or non logged in user
self.window?.rootViewController = storyboard?.instantiateViewControllerWithIdentifier("SignInViewController")
return true
}
根据您的评论,听起来您有一个导航控制器,其根视图控制器是您在视图控制器中的标志,这就是为什么当您切换到标签栏控制器时,您会得到一个导航栏。
由于我的方法您没有获得segue(以及登录控制器的导航栏),请初始化新的UINavigationController
并将其rootViewController
设置为您的if let currentUser = PFUser.currentUser() { // currentUser is not nil
// load tab bar controller
let tabBarController = storyboard?.instantiateViewControllerWithIdentifier("TabBarViewController")
// initialize a new navigation controller with the tab bar controller as its rootViewController
let navC = UINavigationController(rootViewController: tabBarController)
// set the window's root view controller to be your new navigation controller
self.window?.rootViewController = navC
}
标签栏控制器:
http://
答案 1 :(得分:1)
你能提供更多信息吗?
这是我检查某人是否已登录的方式
override func viewDidAppear(animated: Bool) {
let currentUser = PFUser.currentUser()
if currentUser != nil {
self.performSegueWithIdentifier("nameOfTheSegueIdentifier", sender: self)
}
}
答案 2 :(得分:1)
通常PFUser.currentUser()
不是零。您应该使用PFUser.currentUser().username
。在登录/注册中使用此代码 ViewController (不是AppDelegate(它工作正常))
override func viewDidAppear(animated: Bool) {
if PFUser.currentUser().username != nil {
self.performSegueWithIdentifier("SEGUE", sender: self)
}
}
此代码中需要注意两件事:它是在viewDidAppear
方法中执行的;不是viewDidLoad
。在视图出现之前,您无法执行任何segue。此外,SEGUE
是您的segue名称的临时占位符。此segue应将用户转移到主页面。
注意:给定代码将显示login/signup viewcontroller's
场景大约一秒钟。我建议在UIImageView
上放置与视图具有相同框架的ViewController
(覆盖整个屏幕)。如果用户名等于nil,则可以添加一个说imageView.alpha = 0
的else语句(在viewDidLoad中将alpha设置为1)。希望这会有所帮助。