Comment faire UITextField se comporter comme un UISearchBar dans Swift?
Salut les gars je suis en train de travailler sur une nouvelle Application à l'aide de UITableView et un UISearchBar rapide et elle fonctionne déjà très bien. Mais depuis que le projet final doit avoir une complète personnalisée barre de recherche, j'ai dû passer à UITextField en entrée, de Sortie, car les possibilités de personnalisation.
Le problème est que je ne peux pas comprendre comment le code de sorte que l'objet UITextField se comporte comme un UISearchBar. N'ai aucune idée de comment je pourrais filtrer les UITextField entrées et de rendre la chaîne utilisable avec les UISearchBarDelegate méthodes.
Si quelqu'un pouvait m'aider à sortir avec cette?
EDIT: j'ai suivi de Daniel aider et est venu avec ce code, mais il est de retour "néant", pas de travail.
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {
@IBOutlet weak var txtSearchBar: UITextField!
var searchTxt = ""
let prods = ["água", "terra", "ar", "fogo"]
var searchResults:[String] = []
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.
txtSearchBar.delegate = self
}
func textFieldDidEndEditing(textField: UITextField) {
searchTxt = textField.text
println(searchTxt)
searchResults = prods.filter({(produtos:String) -> Bool in
let nameMatch = produtos.rangeOfString(self.searchTxt, options: NSStringCompareOptions.CaseInsensitiveSearch)
println(nameMatch)
return nameMatch != nil})
}
Mon entrée était les lettres "ar" mais elle est revenue "néant", quand il ne devrait pas, puisque l'un de la matrice de l'objet est "ar".
Ce dont j'ai besoin, c'est quand l'utilisateur appuie sur le bouton de recherche au clavier, de la tableview sera rechargé avec les éléments correspondant à la chaîne de recherche. Je veux un UITextField de travail comme si c'était un UISearchBar.
OriginalL'auteur Marco Almeida | 2014-10-19
Vous devez vous connecter pour publier un commentaire.
Créer objet uitextfield:
Viewdidload:
De recherche dans le champ méthode du délégué:
De recherche affichage des données dans tableview :
OriginalL'auteur Jayesh Miruliya
Votre première question semble être de savoir comment mettre en œuvre une classe qui fonctionne exactement comme la UISearchBar. Que serait une entreprise énorme!
Toutefois, dans vos notes que vous venez de demander à la façon de réagir du bouton de recherche se exploité.
Ajouter une IBAction et un second tableau à votre vue-contrôleur. Appelez le deuxième tableau, quelque chose comme "foundItems". Connectez le IBAction du bouton de recherche. Lorsque l'action est appelée, lire le texte du champ de texte et de filtrer les éléments basés sur ce texte. Mettre les éléments qui sont conformes au filtre dans la foundItems tableau, puis d'appeler reloadData() sur votre table.
Dans votre vue de la table de source de données, méthodes, vérifier pour voir si foundItems n'est pas nul. Si elle ne l'est pas, puis de les afficher à la place de vos principaux éléments de la matrice.
Vous aurez également besoin d'une sorte de bouton annuler. Dans cette action du bouton, zéro le foundItems tableau et appel reloadData() sur votre table.
Eh bien, cela dépend de la nature des données. Mais le type du Tableau a un
filter
méthode. Vous devriez peut-être commencer par là.OriginalL'auteur Daniel T.
Xcode 9.2 /Swift 4 -- Code De Travail
@ViewDidLoad
@Fonction
@UITableView
OriginalL'auteur Krunal Patel
Avec l'aide de @Daniel T. j'ai réussi à résoudre le problème avec le code suivant:
Merci @Daniel T.
OriginalL'auteur Marco Almeida