Je travaille sur une application iPhone avec une fonction de recherche, où l'écriture des termes de recherche dans un UISearchBar change (filtres) la sortie de l'UITabelView ci-dessous.Iphone Search Bar efface le bouton écrasant l'application
Lorsque l'utilisateur édite le contenu de la barre de recherche et supprime tout le texte, le code suivant est exécuté dans
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if([searchText isEqualToString:@""] || searchText==nil){
[tableData removeAllObjects]; //clear array that holds data for table view
[tableData addObjectsFromArray:tumorNames]; //load array with database
[searchTableView reloadData];
return;
}
}
(method continues...)
Maintenant, cela fonctionne très bien lors de l'édition dans la barre de recherche: si vous supprimez tout le texte avec retour arrière/effacement ou appuyez sur le bouton 'effacer' n'a pas d'importance - le champ de recherche est effacé et tous les éléments interrogeables sont rendus visibles dans la vue tableau. Il en va de même pour appuyer sur le bouton «Annuler», mais dans ce cas, bien sûr, la barre de recherche démissionne du premier répondant. Cependant, lorsqu'une recherche a été effectuée et qu'un ou plusieurs éléments de résultat sont affichés dans la vue de la table (la barre de recherche a démissionné le premier répondeur et le clavier est parti), appuyer sur le bouton Effacer est toujours possible, mais entraîne l'application plantage avec le message suivant:
'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)'
Il semble que le problème est dans le rechargement des données de vue de la table, mais je ne peux pas comprendre pourquoi il y aurait un problème avec l'indice du tableau dans un cas mais pas dans l'autre.
Quelqu'un sait pourquoi cela se produirait? Toute aide appréciée.
Gregor, Suède
[searchBar resignFirstResponder]; fait le tour – Souljacker