2017-10-05 11 views
-1

Donc le scénario est que j'implémente une barre de recherche au-dessus d'un mapView. Donc, ma classe n'est pas UITableViewController. Auparavant, il utilisait searchDisplayController, mais puisque cela est déprécié, je veux éviter de l'utiliser. le contrôleur d'affichage de recherche utilisait UITableViewDataSource pour manipuler les lignes de table et autres.Besoin d'utiliser UISearchController sans UITableViewController comme un UISearchDisplayController

Puis-je toujours faire apparaître des lignes sur le dessus pendant que je recherche? les tutoriels que je peux trouver pour UISearchController utilisent UITableView. Je veux que les lignes de table juste pour m'affichent mon résultat de recherche et disparaissent quand je choisis une rangée et la barre de recherche devrait également démissionner.

Quelqu'un peut-il me guider dans la bonne direction?

EDIT: Je suis actuellement en utilisant une barre de recherche fait du story-board

Répondre

0

Si vous avez besoin d'une conception comme une liste, la meilleure option est un tableview. Vous pouvez ajouter une vue de table sous votre barre de recherche, la masquer au départ et l'afficher une fois que l'utilisateur a sélectionné la barre de recherche pour la recherche. Je joins la capture d'écran pour le storyboard et voici le code pour gérer la peau et démasquage de tableview enter image description here

Voici le code:

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { 
    tableViewForSearch.isHidden = false 

} 
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 
    tableViewForSearch.isHidden = true 
} 

Ce sont les délégués SearchBar, ils sont tout à fait descriptif. N'oubliez pas de définir le délégué searchBar sur self. Espérons que cela aide

+0

Merci pour la réponse. Après beaucoup de bricolages, je suis d'accord avec vous sur le fait que c'est aussi la bonne direction, mais je continue à avoir du mal à gérer manuellement une vue de table sur une vue (qui contient une vue cartographique). barre de recherche devient le premier répondeur et disparaît quand ce n'est pas –

+0

Ok, cela va-t-il être utile si j'attache l'image du storyboard et aussi le code correspondant pour masquer la vue de la table quand le searchBar est activé? Mettra à jour la réponse dans un certain temps –

+0

Bien sûr, très apprécié! –

0

En utilisant les délégués UISearchBar, vous pouvez réaliser votre tâche.

Étape 1: Ajoutez UISearchBar à votre vue depuis la bibliothèque d'objets d'affichage.

/Utilisateurs/rajesh/Desktop/Screen Shot 05/10/2017 au 17/11/14 AM.png

Etape 2: Ajouter la sortie UISearchBar à votre classe viewcontroller.

@IBOutlet weak var searchbar: UISearchBar!

Etape 3: Conformes délégué UISearchBar à votre classe viewcontroller.

`searchbar.delegate = self` 

Etape 4: Utiliser tous les méthodes délégués UISearchBar vous terminerez votre scénario.

@available(iOS 2.0, *) optional public func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool // retour NON pour ne pas devenir le premier répondeur

@available(iOS 2.0, *) 
optional public func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) // called when text starts editing 

@available(iOS 2.0, *) 
optional public func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool // return NO to not resign first responder 

@available(iOS 2.0, *) 
optional public func searchBarTextDidEndEditing(_ searchBar: UISearchBar) // called when text ends editing 

@available(iOS 2.0, *) 
optional public func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) // called when text changes (including clear) 

@available(iOS 3.0, *) 
optional public func searchBar(_ searchBar: UISearchBar, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool // called before text changes 


@available(iOS 2.0, *) 
optional public func searchBarSearchButtonClicked(_ searchBar: UISearchBar) // called when keyboard search button pressed 

@available(iOS 2.0, *) 
optional public func searchBarBookmarkButtonClicked(_ searchBar: UISearchBar) // called when bookmark button pressed 

@available(iOS 2.0, *) 
optional public func searchBarCancelButtonClicked(_ searchBar: UISearchBar) // called when cancel button pressed 

@available(iOS 3.2, *) 
optional public func searchBarResultsListButtonClicked(_ searchBar: UISearchBar) // called when search results button pressed 


@available(iOS 3.0, *) 
optional public func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) 
+0

Merci d'avoir répondu. Je peux déjà utiliser les méthodes de délégué UISearchBar. Le problème auquel je suis confronté est UISearchController n'a pas un affichage de recherche comme UISearchDisplayController a. Donc j'ai besoin de pouvoir le connecter avec une table.Donc, la direction de la solution que je peux penser est en quelque sorte faire une tableview apparaître lorsque la barre de recherche devient premier répondeur. J'ai besoin d'aide avec ça –