В настоящее время я пытаюсь реализовать функцию поиска по UITableView
с динамическими данными, полученными из вызова API.Быстродействующий поисковый контроллер
поток будет что-то вроде этого
- Нажмите правой бар кнопки элемент (функция поиска)
- Контроллер поиска представлен по табличном.
- Пользователь вводит текст и нажимает кнопку поиска
- Контроллер выполняет вызов API на основе поиска пользователя.
- Вид таблицы заполняется результатами.
Я видел примеры sokme о том, как реализовать поиск по таблицеView, и, по-моему, у меня разные, потому что я вручную представляю контроллер поиска. Он не отображается до нажатия кнопки поиска (в качестве примера для примеров, когда UISearch
добавляется в представление заголовка таблицы, а функция поиска запускается, когда пользователь нажимает на панель поиска.)
Так что, в основном у меня есть некоторые вопросы:
1.- Подходит ли мой подход к iOS? Может быть, я не могу найти ресурсы о том, как я пытаюсь достичь, потому что это не так.
2.- Если true, как я могу отклонить контроллер поиска после нажатия кнопки поиска на клавиатуре?
3.- Как я могу отличить увольнение от кнопки поиска на клавиатуре или кнопкой отмены на панели поиска?
Вот мой код до сих пор:
extension MyTableViewController: UISearchResultsUpdating {
func updateSearchResultsForSearchController(searchController: UISearchController) {
}
}
class MyTableViewController: UITableViewController, UISearchControllerDelegate {
var searchController: UISearchController!
var data = [CoolData]()
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "search"), style: .Plain, target: self, action: .SearchTapped)
}
func searchButtonTapped(sender: UIBarButtonItem) {
searchController = UISearchController(searchResultsController: nil)
definesPresentationContext = true
searchController.searchResultsUpdater = self
searchController.delegate = self
searchController.searchBar.translucent = false
searchController.searchBar.barTintColor = UIColor(hexString: BACConstants.color.Yellow)
searchController.searchBar.tintColor = UIColor(hexString: BACConstants.color.Black)
self.presentViewController(searchController, animated: true, completion: nil)
}
}
private extension Selector {
static let SearchTapped = #selector(InvolvedProcessesViewController.searchButtonTapped(_:))
}
На самом деле вы можете обратиться к коду, предоставленному Apple, для этого. Запустите образец кода, и он находится в разделе Поиск -> Настоящая панель навигации. Вот ссылка: https://developer.apple.com/library/prerelease/content/samplecode/UICatalog/Introduction/Intro.html – muazhud
Я читал быстрый пример по этой ссылке: https://developer.apple.com /library/prerelease/content/samplecode/UICatalog/Listings/Swift_UIKitCatalog_SearchPresentOverNavigationBarViewController_swift.html#//apple_ref/doc/uid/DTS40007710-Swift_UIKitCatalog_SearchPresentOverNavigationBarViewController_swift-DontLinkElementID_77 кажется, объяснить, как представить строку поиска, но не так, как обрабатывать свои события , Но, по крайней мере, сейчас я знаю, что это iOS-friendly, так как это на официальных примерах. :) – lerp90