2011-12-09 14 views

Respuesta

16

Usted pregunta puede ser un duplicado de How can I change strings of "Cancel" button, "No Results" label in UISearchBar of UISearchDisplayController?

Aquí está una modificación de la respuesta dada allí:

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller 
     shouldReloadTableForSearchString:(NSString *)searchString { 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.001); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     for (UIView* v in self.sbc.searchResultsTableView.subviews) { 
      if ([v isKindOfClass: [UILabel class]] && 
        [[(UILabel*)v text] isEqualToString:@"No Results"]) { 
       // .. do whatever you like to the UILabel here .. 
       break; 
      } 
     } 
    }); 
    return YES; 
} 

Básicamente lo que está pidiendo que hacer es simplemente para acceder a la UILabel que está mostrando el Texto "Sin resultados". No hay forma oficial de hacer eso. La solución, como se sugiere en esa página, es buscar el UILabel (enumerando todas las subvistas de la tabla de resultados de búsqueda) y modificarlo. En general, no puedo alentar este tipo de cosas, pero me parece que la negativa de Apple a proporcionar una forma oficial de lidiar con esta etiqueta de "Sin resultados" es francamente detestable, por lo que no hay restricciones en esta lucha en particular.

+8

Esto no funcionará si el idioma del dispositivo no es inglés. –

+1

@AlastairStuart Buen punto. El que vive de la espada muere a espada; Yo * dije * esto fue una solución estrafalaria. Apple realmente necesita dejarnos personalizar esto de alguna manera oficial. – matt

Cuestiones relacionadas