我已经创建了一个用户个人资料屏幕,加载后,数据需要几秒钟才能显示。我正在寻找更优雅的解决方案。
这是故事板中的视图控制器:
如您所见,有占位符文字。问题是加载此屏幕时(在从数据库中检索数据之前),此文本会非常短暂地显示。
以下是数据完全加载时屏幕的样子:
我已经看到上一个屏幕上的活动指示器可能是一个很好的解决方案。任何人都可以验证这一点并指出我的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
}
}
}
答案 0 :(得分:3)
这个实际上非常简单......只需从故事板中删除占位符文本即可。这样,它就会非常简短地出现。"
如果您不喜欢空白屏幕的想法,请将加载代码移动到显示视图的位置。在加载代码完成之前,不要显示视图。如果执行此操作,则必须在演示时将数据传递给视图控制器。
- 编辑 -
不要覆盖performSegueWithIdentifier:sender:
!这样做无法实现目标。
我再说一遍。将加载代码移动到调用执行segue的位置,并将调用延迟到加载数据之后。 (I.E.在获得项目后将执行segue调用移动到findObjectsInBackgroundWithBlock
块。