Как остановить 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") внутри функции, чтобы увидеть, что это работает.

Другие вопросы по тегам