Как остановить UIActivityIndicator после завершения работы UISearchBar в Swift
Итак, мои настройки:
У меня есть приложение, настроенное с помощью 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 ответ
Я только что проверил некоторые документы для PFQueryTableViewController
и есть метод objectsDidLoad()
это кажется многообещающим. Итак, попробуйте добавить это ниже вашего queryForTable()
функция:
override func objectsDidLoad(error: NSError?) {
super.objectsDidLoad(error)
// Your code here to stop the UIActivityIndicator
}
И вы могли бы добавить print("objectsDidLoad")
внутри функции, чтобы увидеть, что это работает.