Cómo mostrar "No se encontraron resultados" en UITableView, si no se devuelve ningún resultado de búsqueda?

En una vista de tabla, estoy mostrando "No se encontraron resultados" si no hay resultados devueltos por el controller de búsqueda agregando otra condición como a continuación:

En numberOfRowsInSection :

 else if self.searchController.active && self.searchController.searchBar.text?.characters.count > 0 && self.filtenetworkingLanguages.count == 0 { return 1 } 

En cellForRowAtIndexPath :

 else if self.searchController.active && self.searchController.searchBar.text?.characters.count > 0 && self.filtenetworkingLanguages.count == 0 { cell.textLabel?.text = "No results found" cellImage = nil cell.userInteractionEnabled = false isNoResultCell = true } if filtenetworkingIndexPath!.row == userSettings.valueForKey("selectedRow") as? Int && !isNoResultCell { cell.tintColor = UIColor.whiteColor() cell.accessoryType = UITableViewCellAccessoryType.Checkmark lastSelectedRow = filtenetworkingIndexPath } 

Hice una investigación sobre los enfoques para mostrar "No se encontraron resultados" en la vista de tabla, pero después de escribir la lógica anterior.

Y según algunas publicaciones, puedo agregar una UILabel como vista secundaria en la vista de background de la tabla en numberOfSectionsInTableView cuando no hay resultados de búsqueda y eliminar la subvista si se devuelven los resultados de búsqueda.

Mi pregunta es: ¿Cuál es la opción más inteligente de resources / performance?

Solutions Collecting From Web of "Cómo mostrar "No se encontraron resultados" en UITableView, si no se devuelve ningún resultado de búsqueda?"

UILabel tomar una UILabel que se UILabel cuando su vista de tabla tenga loggings (es decir, matriz que tiene loggings que se mostrarán en tableview).

Cuando busca un logging y no obtiene loggings, puede ocultar la vista de tabla y mostrar la label con el text "No se encontraron resultados".

testing esto

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { NSInteger numOfSections = 0; if (youHaveData) { self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; numOfSections = 1; yourTableView.backgroundView = nil; } else { UILabel *noDataLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, yourTableView.bounds.size.width, yourTableView.bounds.size.height)]; noDataLabel.text = @"No data available"; noDataLabel.textColor = [UIColor blackColor]; noDataLabel.textAlignment = NSTextAlignmentCenter; yourTableView.backgroundView = noDataLabel; yourTableView.separatorStyle = UITableViewCellSeparatorStyleNone; } return numOfSections; } 

Seguramente te puedo recomendar esta gran biblioteca, https://github.com/dzenbot/DZNEmptyDataSet , será un trabajo en tu nombre. Y puede establecer fácilmente un UICollectionView position ya sea una cadena normal o una cadena atribuida o una image en lugar de UICollectionView o UITableView .

Cuando haga que los datos simplemente recarguen su object y oculte ese elemento de marcador de position.

Utilizar:

En viewDidLoad :

 self.tableView.emptyDataSetSource = self; self.tableView.emptyDataSetDelegate = self; 

Implementar delegado siguiente:

 - (NSAttributedString *)titleForEmptyDataSet:(UIScrollView *)scrollView { NSString *text = @"No results found."; NSDictionary *attributes = @{NSFontAttributeName: [UIFont boldSystemFontOfSize:18.0f], NSForegroundColorAttributeName: [UIColor darkGrayColor]}; return [[NSAttributedString alloc] initWithString:text attributes:attributes]; } 

Para get más información y uso, consulte el enlace anterior.

Oh, sí, para usarlo dentro del proyecto Swift: Cómo llamar al código Objective-C de Swift .

Coloque una UILabel detrás de la table. Cuando el recuento de la tabla es 0, haz la tabla "isHidden" = true. Esto ocultará la tabla y luego verá la capa debajo de ella. La label de la interfaz de usuario se mostrará ya que está directamente debajo de la vista de tabla.