2010-07-14 41 views
12

que tienen un tableview de búsqueda, pero me gustaría sólo para mostrar el número de células que se devuelve una vez que un usuario inicia una búsqueda. Por ejemplo, si un usuario escribe un charecter y solo hay una celda que coincida con la búsqueda, las celdas restantes las celdas restantes de la tabla están vacías. Me preguntaba si hay una manera de ocultar esas celdas vacías. También me preguntaba si hay una manera de ocultar la vista de tabla si la búsqueda de una persona no coincide con ningún dato (de forma predeterminada, muestra una tabla de celdas vacías que dice "Sin resultados").Ocultar celdas vacías en UITableView

Gracias.

Respuesta

5

Cambie su implementación de tableView:numberOfRowsInSection: en su fuente de datos para devolver el número de resultados de búsqueda en lugar de la cantidad total de elementos. Luego complete esas celdas con los resultados de búsqueda en lugar de con el resto de los datos.

61

Establezca el tableFooterView en una vista ficticia ([[UIView new] autorelease] funcionará bien). Esto solicita UITableView para mostrar el pie de página (que tendrá un tamaño cero) en lugar de las "celdas" vacías.

+0

Parece un error, pero esto funciona. –

+1

¿esto todavía funciona en iOS5 y ARC? – codejunkie

+0

@codejunkie - No lo he intentado; debería funcionar bien, pero no necesita la liberación automática. – TomSwift

23
- (void) viewDidLoad 
{ 
    [super viewDidLoad]; 
*// self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];* 
    *//Since memory management is controlled by ARC now, so ignore autorelease* 
    self.tableView.tableFooterView = [[UIView alloc] init] ; 
} 
+0

self.tableView.tableFooterView = [[UIView alloc] init]; funcionó, pero recibí un error con la liberación automática (la liberación automática no está disponible: no está disponible en el modo de conteo automático de referencias) – mrmuggles

+0

He actualizado la respuesta, espero que sea más comprensible. – yunas

0

simple que puede utilizar este ..

tableView.tableFooterView = [UIView new]; 
0

para SWIFT xCode 2.x 7:

override func viewDidLoad() { 
     super.viewDidLoad() 
     print("∙ \(NSStringFromClass(self.dynamicType))") 
     ... 
     self.tableView.tableFooterView = UIView() 
} 
0
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
     if (([array count]*65) > [UIScreen mainScreen].bounds.size.height - 66) 
     { 
      Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [array count]*65)); 
     }else 
     { 
     Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 66); 
     } 
     return [array count]; 
} 

aquí 65 es la altura de la celda y 66 se la altura de la barra de navegación en UIViewController.

0

para SWIFT en Xcode

cell.userInteractionEnabled = false 

lugar esto en extremo de la célula para la fila en el índice de la tabla

0

ocultar un celdas vacías en Swift

Swift 3 Edición

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 

    self.tableView.tableFooterView = UIView(frame: CGRect.zero) 
} 

Swift 2 Edition

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 

    self.tableView.tableFooterView = UIView(frame: CGRectZero) 
} 
Cuestiones relacionadas