Come posso modificare le stringhe del pulsante “Annulla”, l’etichetta “Nessun risultato” in UISearchBar di UISearchDisplayController?

Come posso modificare le stringhe del pulsante “Annulla”, l’etichetta “Nessun risultato” in UISearchBar di UISearchDisplayController?

Mi aiuti per favore!

L’ho risolto io stesso.

Pulsante Annulla>

(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller { [controller.searchBar setShowsCancelButton:YES animated:NO]; for (UIView *subview in [controller.searchBar subviews]) { if ([subview isKindOfClass:[UIButton class]]) { [(UIButton *)subview setTitle:@"_____" forState:UIControlStateNormal]; } } } 

Nessun testo dei risultati>

 - (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView { if (!isChangedNoResults) { if ([contactManager.filteredPeople count] == 0) { [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(changeNoResultsTextToKorean:) userInfo:nil repeats:YES]; } } } 

Uso il timer e il valore bool. Se non ci sono timer, non è ansible cambiare il testo quando viene visualizzato “Nessun risultato”.

 - (void)changeNoResultsTextToKorean:(NSTimer *)timer { if (isChangedNoResults) { [timer invalidate]; } else { for (UIView *subview in [self.searchDisplayController.searchResultsTableView subviews]) { if ([subview isKindOfClass:[UILabel class]]) { UILabel *targetLabel = (UILabel *)subview; if ([targetLabel.text isEqualToString:@"No Results"]) { NSLog(@"Changed!"); [targetLabel setText:@"_____"]; isChangedNoResults = YES; [timer invalidate]; } } } } } 

Per cambiare il testo “nessun risultato” puoi usare:

 [self.searchDisplayController setValue:@"my no result text" forKey: @"noResultsMessage"]; 

Ho appena provato su iOS8

Grazie ChangUZ per aver trovato un modo. Ora, per migliorare, non è necessario un timer per modificare l’etichetta “Nessun risultato”.

 - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { dispatch_async(dispatch_get_main_queue(), ^(void) { for (UIView *v in controller.searchResultsTableView.subviews) { if ([v isKindOfClass:[UILabel self]]) { ((UILabel *)v).text = @"_____"; break; } } }); return YES; } 

Una soluzione più semplice per modificare il testo del pulsante Annulla:

 [self.searchDisplayController.searchBar setValue:@"custom text" forKey:@"cancelButtonText"]; 

Testato su iOS 10