SWIFT / iOS:屏幕出现时加载数据需要几秒钟

时间:2015-10-25 00:29:49

标签: ios swift xcode7

我已经创建了一个用户个人资料屏幕,加载后,数据需要几秒钟才能显示。我正在寻找更优雅的解决方案。

这是故事板中的视图控制器:

enter image description here

如您所见,有占位符文字。问题是加载此屏幕时(在从数据库中检索数据之前),此文本会非常短暂地显示。

以下是数据完全加载时屏幕的样子:

enter image description here

我已经看到上一个屏幕上的活动指示器可能是一个很好的解决方案。任何人都可以验证这一点并指出我的SWIFT教程或Stack Overflow解决方案吗?

更新 我按照建议在前一个View Controller上加载数据。我遇到的问题是我存储数据的常量在prepareForSegue中无法访问 -

override func performSegueWithIdentifier(identifier: String, sender: AnyObject?) {


            let query = PFQuery(className:"UserProfileData")
            query.whereKey("username", equalTo: (PFUser.currentUser()?.username)!)

            query.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error: NSError?) -> Void in

                if error == nil {

                    if let objects = objects! as? [PFObject] {
                        for object in objects {

                            let yourselfObject = object["yourself"] as! String?
                            let brideGroomObject = object["brideGroom"] as! String?

                        }
                    }
                } else {
                    print(error)
                }
            }


}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "RSVPToUserProfile" {
        if let destination = segue.destinationViewController as? UserProfileViewController {

            destination.yourselfPassed = yourselfObject
            destination.brideGroomPassed = brideGroomObject

        }
    }


}

1 个答案:

答案 0 :(得分:3)

这个实际上非常简单......只需从故事板中删除占位符文本即可。这样,它就会非常简短地出现。"

如果您不喜欢空白屏幕的想法,请将加载代码移动到显示视图的位置。在加载代码完成之前,不要显示视图。如果执行此操作,则必须在演示时将数据传递给视图控制器。

- 编辑 -

不要覆盖performSegueWithIdentifier:sender:这样做无法实现目标。

我再说一遍。将加载代码移动到调用执行segue的位置,并将调用延迟到加载数据之后。 (I.E.在获得项目后将执行segue调用移动到findObjectsInBackgroundWithBlock块。