2010-03-22 11 views
7

Ho un UITableViewController che è popolato con alcuni dati. Se i dati tornano vuoti, ovviamente la tabella è vuota. Qual è il metodo appropriato da utilizzare per gestire questo caso e inserire qualcosa come un UILabel con "Nessun dato disponibile".Gestione di UITableView in UITableViewController vuoto

Ho utilizzato - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section ma si è dimostrato un po 'macchinoso e non sono più sicuro che sia il posto migliore per farlo.

risposta

1

Ho appena nascosto la vista tabella quando invece non c'erano dati. Sottoponi semplicemente UITableView e sostituisci reloadData. Puoi anche mostrare/nascondere un'etichetta di testo in modo appropriato per non mostrare i dati disponibili.

- (void)reloadData { 
    [super reloadData]; 
    BOOL dataPresent = FALSE; 
    int sections = [self.dataSource respondsToSelector:@selector(numberOfSectionsInTableView:)] ? [self.dataSource numberOfSectionsInTableView:self] : 1; 
    for (int i = 0; i < sections; i++) { 
     if ([self.dataSource tableView:self numberOfRowsInSection:i] > 0) { 
      dataPresent = TRUE; 
      break; 
     } 
    } 
    self.hidden = !dataPresent; 
    return; 
} 
5

Probabilmente invertirò la filosofia un po 'per mostrare UITableView solo quando il contenuto è disponibile, e fare in modo che l'UIView mostri l'immagine disponibile' senza contenuto 'finché il contenuto non è pronto.

Una volta che il contenuto è stato recuperato ed è pronto per essere presentato, è possibile animare o creare UITableView nella gerarchia della vista sull'immagine 'senza contenuto' e chiedergli di ricaricare i suoi dati. In questo modo inizierà a lavorare attraverso i suoi callback dei delegati di origine dati.

Almeno in questo modo non dovrai preoccuparti di mostrare una vista tabella senza dati e mescolare le preoccupazioni con i metodi di callback di UITableViewDataSource.

+0

Mi piace. Così ho iniziato con l'app Navigation Based e ho finito con un UITableViewController. Quindi se nascondo tableView, come faccio ad aggiungere cose alla vista e quale vista è quella che sta lì sotto? Quando apro InterfaceBuilder vedo solo il tableview. Mi sta confondendo. – Ternary

1

Perché non modificare semplicemente la proprietà backgroundView di UITableView su qualcosa di appropriato quando la tabella è vuota? Puoi aggiornare la proprietà backgroundView ogni volta che carichi o ricarichi i dati per il tuo tableView. BackgroundView viene automaticamente ridimensionato in base alle dimensioni del tuo TableView e puoi personalizzarlo per avere qualsiasi immagine, testo, controllo che desideri per il caso vuoto.

Problemi correlati