Как вы уволите UISearchController? (iOS 8 и далее)
Это должно быть тривиально, но я не могу найти, как вы должны программно игнорировать UISearchController?
Обратите внимание, что это новый UISearchController (введенный в 2014 году с iOS 8), а не UISearchDisplayController.
Пока что у меня есть
// Dismiss the search tableview
searchController.dismissViewControllerAnimated()
// Clear the Search bar text
searchController.active = false
Но у меня все еще есть кнопка отмены и не могу избавиться от нее.
Ответы
Ответ 1
ОК, так что после более тщательного тестирования, вы просто должны установить:
searchController.active = false
Это первое, что я пробовал, но я назвал его в одном из методов UISearchControllerDelegate, который не работал (вероятно, должен был вызвать его с dispatch_async (ответ halbano, похоже, подтверждает это)).
В любом случае, так как я не мог найти этот ответ в сети, я отвечаю на свой вопрос, надеюсь, что это поможет кому-то.
Ответ 2
У вас возникла эта проблема, когда вы пытаетесь отклонить контроллер поиска после перехода на другой режим? Я тоже столкнулся с этой проблемой. Я думаю, вы можете использовать
self.definesPresentationContext = true
в контроллере представления, который представляет UISearchController в соответствии с этим сообщением UISearchController, который не отклоняется при нажатии кнопки "Просмотр" . Это работает для меня.
Ответ 3
Я представлял рудник на панели навигации. Код, который работает для меня, был:
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
dispatch_async(dispatch_get_main_queue(), ^{
[self.searchController setActive:NO];
self.navigationController.navigationBar.topItem.title = @"MYTITLE".uppercaseString;
self.navigationItem.titleView = nil;
});
}
Надеюсь, что это поможет кому-то.
Ответ 4
У меня была эта проблема с помощью search andactionController, решена после включения строки: self.dismissViewControllerAnimated(false, завершение: ноль)
Откройте взаимодействие и очистите поиск без изменений в делегате.