Comment puis-je utiliser UISearchController dans iOS 8, où le UISearchBar est dans ma barre de navigation et a la portée des boutons?
Je suis en train d'utiliser la nouvelle UISearchController
à partir d'iOS 8, et intégrer ses UISearchBar
dans mon UINavigationBar
. C'est facile à faire comme suit:
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.delegate = self
searchController.searchBar.delegate = self
searchController.dimsBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
navigationItem.titleView = searchController.searchBar
Mais quand j'ajoute le champ d'application de boutons:
searchController.searchBar.showsScopeBar = true
searchController.searchBar.scopeButtonTitles = ["Posts, Users, Subreddits"]
Il ajoute les boutons derrière le UISearchBar
et, évidemment, l'air très bizarre.
Comment dois-je faire cela?
- Pouvez-vous donner un aperçu ?
- Je vais avoir le même problème. Il semble que UISearchController n'est pas tout à fait comprendre l'idée de UISearchBar étant à l'intérieur de la barre de navigation. Même apple exemple semblent mettre de barre de recherche ci-dessous la barre de navigation.
- la version de votre aide, ce problème est-il en version bêta 3 n 4.
- Si besoin, suivez ce lien vers la source, il devrait aider raywenderlich.com/16873/how-to-add-search-into-a-table-view
InformationsquelleAutor Doug Smith | 2015-01-10
Vous devez vous connecter pour publier un commentaire.
Vous êtes foncer sur un "problème de conception" où la
scopeBar
devrait être masqué lorsque lesearchController
n'est pas active.La portée des boutons de la barre d'apparaître derrière (en dessous) de la barre de recherche, puisque c'est leur emplacement lorsque la barre de recherche est active et anime lui-même en haut dans la barre de navigation.
Lorsque la recherche n'est pas actif, visible barre de portée serait de prendre de l'espace sur l'écran, détourner l'attention du contenu et perturber l'utilisateur (étant donné que la portée des boutons ont pas de résultats à filtre).
Depuis votre
searchBar
se trouve déjà dans le titleView, le (la navigation et la recherche) de la barre de l'animation qui révèle l'étendue de la barre ne se produit pas.la barre de navigation, et de laisser le
searchBar
animer dans le titrela zone lorsqu'il est activé. La barre de navigation animer sa hauteur,
faire de la place pour inclure la barre de portée ce qui était caché. Tout cela va
être traitées par le contrôleur de recherche.
La deuxième option, presque aussi facile, est d'utiliser un de Recherche bouton de la barre d'
icône, qui va animer la
searchBar
etscopeBar
vers le bas dansvue sur la barre de navigation.
Si vous voulez le
searchBar
de rester dans le titleView, une animationpour faire ce que vous voulez n'est pas construit dans. Vous devrez faire vos propres
code pour gérer le navigationBar hauteur de modifier et d'afficher votre propre
barre de portée (ou le crochet dans le fonctionnement interne, et d'animer le haut-
scopeBar
vers le bas et dans la vue).Si vous avez de la chance, quelqu'un d'autre a écrit
willPresentSearchController:
code pour gérer la transition que vous souhaitez.Si vous voulez toujours voir un
searchBar
etscopeBar
, vous devrez probablement le fossé à l'aide de l'scopeBar
, et de le remplacer par unUISegmentedControl
laquelle l'utilisateur aura toujours le voir, même lorsque la recherche de contrôleur n'est pas active.Mise à jour:
Cette réponse suggéré de sous-classement
UISearchController
de changer sa barre de recherche de hauteur.presentViewController
partie de la searchController)