在等待来自 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。这对我有用,因为那是检索到的数据生命周期的结束。如果有其他功能依赖于它 - 这是行不通的:(