为登录用户触发 Segue

Posted

技术标签:

【中文标题】为登录用户触发 Segue【英文标题】:Trigger Segue for Logged In User 【发布时间】:2015-06-28 10:54:17 【问题描述】:

在我的登录视图控制器中,我检查用户是否已登录。如果是,我希望他们通过 segue 重定向到个人资料页面,如果不是,则保留并使用他们的凭据登录。

segue 由于某种原因没有执行,尽管我确信 currentUser 设置正确,并且在使用 UIAlert 测试时它显示正确。

以下是代码,注释掉的部分仅用于警报

 override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        var currentUser = PFUser.currentUser()
        if currentUser != nil 
            /*let alert = UIAlertView()
            alert.title = "Welcome Back!"
            alert.message = "You are logged in!"
            alert.addButtonWithTitle("Ok")
            alert.show()*/
            self.performSegueWithIdentifier("showProfileSegue", sender: self)
         else 
            let alert = UIAlertView()
            alert.title = "Stranger"
            alert.message = "You will be requested to enter your details"
            alert.addButtonWithTitle("Ok")
            alert.show()
        
    

我在两个视图之间设置了标识符为“showProfileSegue”的segue。

谢谢

【问题讨论】:

【参考方案1】:

AFAIK viewDidLoad() 不是视图控制器生命周期中推送 segue 的正确位置。因为初始视图还没有出现。您是否尝试过从viewDidAppear() 推送它?

如果您确定从生命周期方法中推送 segue 是实现您想要的正确方法。但请记住,某些生命周期方法可以重复调用。如果登录屏幕在每个会话中只出现一次,那也许没问题。

可能还值得通过按测试按钮来测试您的 segue 和 prepareForSegue 是否按预期运行。

【讨论】:

Simons 它确实在 ViewDidAppear 中工作...完全跳过我把它放在那里,谢谢。

以上是关于为登录用户触发 Segue的主要内容,如果未能解决你的问题,请参考以下文章

iOS:让segue等待登录成功

iOS:让segue等待登录成功

performSegueWithIdentifier 未从展开 segue 触发

从线程/ GCD/完成处理程序返回

为啥程序在登录时不执行segue?

如果用户已经使用 facebook 登录,则使用 swift 调用 segue