2011-05-24 16 views
9

Im usando una vista tabella per visualizzare alcune informazioni in una app di quiz su cui sto lavorando. La mia domanda è: come faccio a mostrare la tabella solo il numero di celle di cui ho bisogno. Ive impostare il numero di righe metodo delegato simili:Come limitare il numero di celle visualizzate su UITableview?

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 5; 
} 

ma nella parte inferiore della vista tabella sono celle vuote che non sono necessari. Se imposto lo stile tableview per raggruppare ottengo 5 celle e nessuna vuota sotto di esse. Ho visto che altre persone hanno fatto questo, ma non riesco a risolverlo. Mi stavo chiedendo se in qualche modo hanno aggiunto una vista personalizzata al footer del tavolo per cancellare le celle vuote?

Qualsiasi idea o aiuto apprezzato.

+0

Non è chiaro se si desidera evitare di utilizzare lo stile raggruppato o avere problemi ad usarlo? –

+0

Non ho problemi nell'implementare nessuno dei gruppi su UITableView standard. Sto cercando di dire se io uso raggruppato e impostare il numero di righe per sezione su 5 quando eseguo l'app vedo 5 righe e questo è solo 5 righe. Se invece utilizzo la vista tabella standard e imposta il numero di righe su 5 righe, vedo che ottengo le mie 5 righe ma poi sotto di esse c'è un numero aggiuntivo di righe vuote che non hanno contenuto e non sono necessarie ma sono messo lì solo per riempire lo schermo. –

risposta

1

È possibile implementare heightForRowAtIndexPath: e calcolare l'altezza corretta per visualizzare solo 5 celle sullo schermo.

0

Un modo semplice sarebbe ridurre la dimensione di TableView. Cioè 5 celle 20 punti ciascuna dà 100.0f, l'altezza di impostazione di 100.0f causerà la visualizzazione di sole 5 righe. Un altro modo sarebbe quello di restituire più righe, ma le righe 6,7 e così sarebbero alcune viste con l'alfa 0, ma ciò sembra macchinoso. Hai provato a restituire una vista clerColor come footerView?

0

Penso che si possa provare a cambiare la cornice della vista tabella, se si desidera regolare con il numero di celle.

0

provare qualcosa di simile:

[table setFrame:CGRectMake(x, y, width, height*[list count])];

altezza si riferisce all'altezza della cella

2

Procedimento molto migliore che non richiede ridimensionamento cella deve spegnere il separatore predefinito (impostare la da stile a nessuno) e quindi avere una linea di separazione nella cella stessa.

+0

Quindi questo comporterebbe la creazione di una cella personalizzata in IB o dovrei aggiungere un separatore nella cella a livello di programmazione? –

+0

Si potrebbe fare entrambi. Generalmente sottoclassi UITableViewCell ma puoi aggiungere una sottoview alla contentview di un normale UITableViewCell. IB o codice è puramente legato al modo in cui preferisci lavorare ... –

0

Come diceva Nyx0uf, la limitazione della dimensione della cella può essere eseguita. Ad esempio:

- (CGFloat)tableView:(UITableView *)tabelView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CGFloat result; 

    result = 100; 

    return result; 
} 
2

Avevo un problema simile, come mostrare solo i separatori per le celle che contengono dati.

Quello che ho fatto è stato il seguente:

  1. separatori Disattiva per tutta la tableView. È possibile farlo nell'ispettore per il tableview nel generatore di interfaccia o chiamando [yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];.

  2. All'interno del numero cellForRowAtIndexPath in cui si popola la vista tabella con celle, creare un nuovo UIView e impostarlo come visualizzazione secondaria della cella. Avere lo sfondo di questa vista grigio chiaro e leggermente trasparente. È possibile farlo con il seguente:

    UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake: 
                 (0, cell.frame.size.height-1, 
                  cell.frame.size.width, 1)]; 
    [separatorView setBackgroundColor:[UIColor lightGrayColor]]; 
    [separatorView setAlpha:0.8f]; 
    [cell addSubView:separatorView]; 
    

    La larghezza di questa vista è 1 pixel che è la stessa come il separatore predefinito, corre la lunghezza della cella, in basso.

Dal cellForRowAtIndexPath viene chiamato solo tutte le volte che è stato specificato nel numberOfRowsInSection saranno creati questi subviews solo per le cellule che possiedono i dati e dovrebbe avere un separatore.

Spero che questo aiuti.

+0

idea fantastica ... – stackOverFlew

1

Hai sempre intenzione di avere 5 righe? Se si tratta di una situazione dinamica, è necessario impostare il numero di righe in base all'origine dati della vista tabella. Ad esempio:

return [postListData count]; 

Questo restituisce il conteggio dei record nella matrice che contiene il contenuto.

La tabella visualizza solo il numero di righe e sezioni a cui viene indicato. Se hai sempre una sola sezione, NON implementare il metodo qui sotto.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 2; 
} 

Senza questa visualizzazione tabella avrà solo 1 sezione. Con esso, come puoi immaginare, puoi specificare il numero di sezioni.

1

Questo ha funzionato per me - ho avuto le righe in più vuote nella parte inferiore dello schermo su un iPhone 5 -

Nel mio caso avevo bisogno di 9 righe

- (CGFloat)tableView:(UITableView *)tabelView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{   
    return self.tableView.frame.size.height/9; 
} 
0

implementare questi due metodi nel UITableViewController :

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
    if (section == tableView.numberOfSections - 1) { 
     return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)]; 
    } 
    return nil; 
} 


- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
{ 
    if (section == tableView.numberOfSections - 1) { 
     return 1; 
    } 
    return 0; 
} 

In realtà, questi codici stanno dicendo Tableview che non è necessario per rendere la linea separatore più per me, in modo che appaia le celle vuote non saranno dis riprodotto (infatti, non è possibile selezionare la cella vuota)

14

Se si desidera mantenere il separatore, è possibile inserire una vista del piè di pagina fittizio. Questo limiterà la Tableview per mostrare solo la quantità di cellule sei tornato in tableView: numberOfRowsInSection:

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 

a Swift:

self.tableView.tableFooterView = UIView(frame: CGRectZero) 
+0

Bella.Assicurati di non avere un'altezza fissa impostata per quella vista tabella o la vista addizionale del piè di pagina potrebbe spingere le cose più in basso sotto la vista tabella (anche se è solo un manichino). – marco

+2

In Swift 3: self.tableView.tableFooterView = UIView (frame: CGRect.zero) – KZD76

1

è abbastanza semplice. Basta impostare la dimensione del popover in questo modo: self.optionPickerPopOver.popoverContentSize = CGSizeMake (200, 200); Certamente è possibile regolare la dimensione (200.200) a seconda della dimensione del contenuto e del numero se righe.

Problemi correlati