UISearchBar在Swift完成后如何停止UIActivityIndi​​cator

时间:2016-02-07 22:12:37

标签: ios swift uisearchbar uiactivityindicatorview

所以我的设置:

我已经使用Parse设置了应用,我正在使用PFQueryTableViewController。我在屏幕上添加了UISearchBar。我有这个搜索所有设置和工作正常。

问题:为了让用户更明显地执行搜索,我想添加一个UIActivityIndicator,以便他们可以看到正在加载的内容。我还beginIgnoringInteractionEvents(),因此在搜索完成之前他们无法使用该应用。

我目前在如何使UIActivityIndicator停止制作动画以及endIgnoringInteractionEvents()方面遇到问题 - 我无法解决我放置此代码的位置:

spinningActivityIndicator.stopAnimating() UIApplication.sharedApplication().endIgnoringInteractionEvents()

我已将UIActivityIndicator的代码放在方法func searchBarSearchButtonClicked(searchBar: UISearchBar)中,这样一旦他们点击键盘上的搜索,微调器就会启动。

但是我可以在哪里放置代码来停止动画并再次启用应用程序?

我为UISearchBar添加的代码如下:

func searchBarTextDidBeginEditing(searchBar: UISearchBar) {

    searchBar.showsCancelButton = true

    self.loadObjects()

}

func searchBarTextDidEndEditing(searchBar: UISearchBar) {

    // Dismiss the keyboard
    searchBar.resignFirstResponder()

    // Force reload of table data
    self.loadObjects()
}

func searchBarSearchButtonClicked(searchBar: UISearchBar) {

    // Dismiss the keyboard
    searchBar.resignFirstResponder()

    spinningActivityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))
    spinningActivityIndicator.center = self.view.center
    spinningActivityIndicator.hidesWhenStopped = true
    spinningActivityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
    view.addSubview(spinningActivityIndicator)
    spinningActivityIndicator.startAnimating()
    UIApplication.sharedApplication().beginIgnoringInteractionEvents() 

    searchBar.showsCancelButton = false

    // Force reload of table data
    self.loadObjects()

}

func searchBarCancelButtonClicked(searchBar: UISearchBar) {

    // Clear any search criteria
    searchBar.text = ""

    // Dismiss the keyboard
    searchBar.resignFirstResponder()

    // Force reload of table data
    self.loadObjects()
}

并在我添加的func queryForTable() -> PFQuery中:

    if filmSearchBar.text != "" {
        query.whereKey("FilmName", containsString: filmSearchBar.text!)

    }

提前致谢!

1 个答案:

答案 0 :(得分:1)

我刚查看了PFQueryTableViewController的一些文档,并且方法objectsDidLoad()似乎很有希望。因此,请尝试在queryForTable()函数下面添加:

override func objectsDidLoad(error: NSError?) {
    super.objectsDidLoad(error)
    // Your code here to stop the UIActivityIndicator
}

您可以在函数中添加print("objectsDidLoad")以查看它是否有效。