在等待来自 Parse 的数据时使用 swift 显示加载动画
Show a loading animation with swift while waiting for the data from Parse
我在这里浏览了很多问答,但几乎所有问答对于其他人的用例来说都太具体了。
我的情况比较一般,比较简单:
iOS\Swift
我有一个按钮,单击该按钮可将用户移至下一个视图。
在单击按钮的同时,它还会执行对 Parse 的查询以获取将在下一个视图中显示的数据。
我正在使用 Parse 的异步 query.getObjectInBackgroundWithId("jjjkkkdddd")
因此,如果我的代码按原样运行 = 单击 -> 移至下一个视图 -> 清空
因为取东西需要一秒钟左右。
我想要的是当用户单击按钮时弹出一个小动画,告诉他们目前正在获取数据,并在数据到达后移动到下一个视图。
这是我的按钮点击代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "1") {
var svc = segue.destinationViewController as ViewControllerQuotes;
svc.toPass = functionToFetchDataFromParse() //<- takes longer than
//switching to the next view
//toPass is a var which lands into the next view
//and it's value is displayed to the user.
}
}
我对 Swift 和 iOS 开发还很陌生,所以我还是想不通:(
点击按钮只需使用 addSubview()
添加 UI 元素,例如 UIActivityIndicatorView
。
在 Parse 的回调中,删除视图并转到下一个控制器,以编程方式调用 segue。
如何在 segue 的目标视图控制器上设置对象,然后获取对象,然后重新加载视图?
这将是:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "1") {
var svc = segue.destinationViewController as ViewControllerQuotes;
svc.yourObjectWhichIsToFetch = yourObjectWhichYouWantToPass //need to create a variable on the ViewControllerQuotes!
}
}
然后在 ViewControllerQuotes class:
class ViewControllerQuotes:ViewController {
var yourObjectWhichIsToFetch:PFObject?
override func viewDidLoad(){
super.viewDidLoad()
yourObjectWhichIsToFetch.fetchInBackgroundWithBlock({
(object, error) -> Void in
if error == nil {
//update the UI
}
})
}
}
使用此代码,您无需显示任何加载说明(真丑)。
我的解决方案:
好吧,我四处摸索,找到了目前适合我的最佳方式。我所做的是从 View1 按下按钮,它告诉第二个视图的视图控制器启动数据获取功能。
在第二个 vie 控制器中,一旦它触发了从 Parse 检索数据的异步函数,它也会显示 activity 指示器并使其成为 运行.
用户看到一个带有 activity 微调器 运行 的空白屏幕。一旦异步函数取回数据,它就会将其推入一个空标签并关闭+隐藏 activity 指示器。
非常适合我的情况。没有接口挂。并让用户清楚地了解在何时何地发生了什么。
谢谢大家!
p.s。这对我有用,因为那是检索到的数据生命周期的结束。如果有其他功能依赖于它 - 这是行不通的:(
我在这里浏览了很多问答,但几乎所有问答对于其他人的用例来说都太具体了。
我的情况比较一般,比较简单:
iOS\Swift
我有一个按钮,单击该按钮可将用户移至下一个视图。 在单击按钮的同时,它还会执行对 Parse 的查询以获取将在下一个视图中显示的数据。
我正在使用 Parse 的异步 query.getObjectInBackgroundWithId("jjjkkkdddd")
因此,如果我的代码按原样运行 = 单击 -> 移至下一个视图 -> 清空 因为取东西需要一秒钟左右。
我想要的是当用户单击按钮时弹出一个小动画,告诉他们目前正在获取数据,并在数据到达后移动到下一个视图。
这是我的按钮点击代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "1") {
var svc = segue.destinationViewController as ViewControllerQuotes;
svc.toPass = functionToFetchDataFromParse() //<- takes longer than
//switching to the next view
//toPass is a var which lands into the next view
//and it's value is displayed to the user.
}
}
我对 Swift 和 iOS 开发还很陌生,所以我还是想不通:(
点击按钮只需使用 addSubview()
添加 UI 元素,例如 UIActivityIndicatorView
。
在 Parse 的回调中,删除视图并转到下一个控制器,以编程方式调用 segue。
如何在 segue 的目标视图控制器上设置对象,然后获取对象,然后重新加载视图?
这将是:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "1") {
var svc = segue.destinationViewController as ViewControllerQuotes;
svc.yourObjectWhichIsToFetch = yourObjectWhichYouWantToPass //need to create a variable on the ViewControllerQuotes!
}
}
然后在 ViewControllerQuotes class:
class ViewControllerQuotes:ViewController {
var yourObjectWhichIsToFetch:PFObject?
override func viewDidLoad(){
super.viewDidLoad()
yourObjectWhichIsToFetch.fetchInBackgroundWithBlock({
(object, error) -> Void in
if error == nil {
//update the UI
}
})
}
}
使用此代码,您无需显示任何加载说明(真丑)。
我的解决方案:
好吧,我四处摸索,找到了目前适合我的最佳方式。我所做的是从 View1 按下按钮,它告诉第二个视图的视图控制器启动数据获取功能。
在第二个 vie 控制器中,一旦它触发了从 Parse 检索数据的异步函数,它也会显示 activity 指示器并使其成为 运行.
用户看到一个带有 activity 微调器 运行 的空白屏幕。一旦异步函数取回数据,它就会将其推入一个空标签并关闭+隐藏 activity 指示器。
非常适合我的情况。没有接口挂。并让用户清楚地了解在何时何地发生了什么。
谢谢大家!
p.s。这对我有用,因为那是检索到的数据生命周期的结束。如果有其他功能依赖于它 - 这是行不通的:(