2010-07-14 23 views
12

Ho una vista tabella ricercabile, ma vorrei solo visualizzare il numero di celle che vengono restituite quando un utente avvia una ricerca. Ad esempio, se un utente digita un carattere e c'è solo una cella che corrisponde alla ricerca, le celle rimanenti le celle rimanenti della tabella sono vuote. Mi stavo chiedendo se c'è un modo per nascondere quelle celle vuote. Mi stavo anche chiedendo se esiste un modo per nascondere la vista tabella se la ricerca di una persona non corrisponde a nessun dato (per impostazione predefinita, visualizza una tabella di celle vuote che dice "Nessun risultato").Nascondi celle vuote in UITableView

Grazie.

risposta

5

Modificare l'implementazione di tableView:numberOfRowsInSection: nell'origine dati per restituire il numero di risultati di ricerca anziché il numero totale di elementi. Quindi popola quelle celle con i risultati della ricerca anziché con il resto dei dati.

61

Impostare la tableFooterView a qualche vista fittizio ([[UIView new] autorelease] funziona bene). Ciò richiede allo UITableView di mostrare il piè di pagina (che avrà dimensione zero) al posto delle "celle" vuote.

+0

Sembra un errore ma funziona! –

+1

fa questo ancora lavorare in iOS5 e ARC? – codejunkie

+0

@codejunkie - Non ho provato; dovrebbe funzionare bene, ma non è necessario il autorelease. – 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]; ha funzionato ma ho ricevuto un errore con autorelease (la funzione di autorelease non è disponibile: non disponibile nella modalità di conteggio dei riferimenti automatici) – mrmuggles

+0

Ho aggiornato la risposta, speriamo sia più comprensibile. – yunas

0

semplice è possibile utilizzare questo ..

tableView.tableFooterView = [UIView new]; 
0

per SWIFT 2.x xCode 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]; 
} 

qui 65 è l'altezza della cella e 66 è l'altezza della barra di navigazione in UIViewController.

0

per rapido nel xcode

cell.userInteractionEnabled = false 

luogo questo fine della cella per la riga all'indice della tabella

0

nascondere un celle vuote in Swift

Swift 3 Edition

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

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

Swift 2 Edizione

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

    self.tableView.tableFooterView = UIView(frame: CGRectZero) 
} 
Problemi correlati