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

标签 ios swift uisearchbar uiactivityindicatorview

所以我的设置:

我有一个使用 Parse 设置的应用程序,我正在使用 PFQueryTableViewController。我在屏幕上添加了一个 UISearchBar。我已将此搜索全部设置好并且工作正常。

问题:为了让用户更清楚地知道正在执行搜索,我想添加一个 UIActivityIndi​​cator 以便他们可以看到正在加载的内容。我还将 beginIgnoringInteractionEvents() 以便他们在搜索完成之前无法使用该应用程序。

我目前在如何让 UIActivityIndi​​cator 停止动画以及如何让 endIgnoringInteractionEvents() 方面遇到问题 - 我只是想不出我应该把它放在哪里代码:

spinningActivityIndi​​cator.stopAnimating() UIApplication.sharedApplication().endIgnoringInteractionEvents()

我已将我的 UIActivityIndi​​cator 代码放在 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!)

    }

提前致谢!

最佳答案

我刚刚查看了一些关于 PFQueryTableViewController 的文档,有一个方法 objectsDidLoad() 看起来很有前途。因此,尝试在您的 queryForTable() 函数下面添加:

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

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

关于ios - UISearchBar 在 Swift 中完成后如何停止 UIActivityIndi​​cator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35259793/

相关文章:

iphone - 如何物理移动 Prefix.pch 和 Info.plist 文件

ios - Xcode 11.3 "No Conditions Available"

uitableview - 向 searchBar 添加索引

按下取消按钮时,IOS 7 UISearchBar 搜索图标不会动画到中心

ios - 返回变量的所有者 - Swift

ios - 为什么我添加到我的 xcode 项目中的音频文件在模拟器中可用,但当我在 iPhone 上部署应用程序时却不可用

ios - 我正在尝试启动录制摄像机 - 它因 SIGABRT 信号而崩溃

iOS - 对象未添加到数组

swift - 如何在平台 "UIKit for Mac"上使用 SwiftUI 打开文件对话框?

ios - 将关闭时的数据传递给导航 Controller 之外的 View Controller ?