2010-04-10 9 views
12

Sto cercando di personalizzare un UITableView. Finora, sembra buono. Ma quando io uso una consuetudine UITableViewCell sottoclasse, non ottengo le celle della tabella vuote quando ci sono solo 3 celle:Mostra UITableViewCells vuoto in UITableView personalizzato

alt text http://img193.imageshack.us/img193/2450/picture1zh.png

utilizzando lo stile di default TableView posso ottenere le ripetono righe vuote per riempire la vista (ad esempio, l'applicazione di posta elettronica ha questo). Ho cercato di impostare un modello backgroundColor sul UITableView allo stesso piastrelle di fondo:

UIColor *color = [UIColor colorWithPatternImage:[UIImage imageNamed:@"score-cell-bg.png"]]; 
moneyTableView.backgroundColor = color; 

... ma la tegola inizia un po 'prima superiore della TableView, quindi la tessera viene fuori una volta la cella attuale sono fatto visualizzazione:

alt text http://img707.imageshack.us/img707/8445/picture2jyo.png

Come posso personalizzare la mia Tableview ma continua a tenere le righe vuote se c'è meno righe di riempire una pagina?

+1

+1 Questa è una buona domanda che è ben presentata. Auguro a tutti, incluso me stesso, di prendersi tutto questo tempo per comporre una buona domanda. – TechZen

+0

Stavo cercando di formulare la stessa domanda e ho trovato due diversi approcci. Come riferimento per coloro che sono venuti qui da Google, seleziona [questa altra risposta] (http://stackoverflow.com/questions/14520185/ios-uitableview-displaying-empty-cells-at-the-end) che utilizza un'abitudine vista a piè di pagina. –

risposta

9

Hai per caso rimosso lo stile del colore di sfondo e del separatore? Se l'hai fatto, potrebbe essere il motivo per cui non ci sono celle in più. Penso che l'UITableView di default non aggiunga più celle, ha solo lo stile separatore per creare quell'illusione e poiché ha uno sfondo bianco, assomiglia alle celle.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
} 

Se questo non è il caso, si può sempre provare ad aggiungere le cellule in più che non possono essere selezionati:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return ([source count] <= 7) ? 7 : [source count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    // Set all labels to be blank 
    if([source count] <= 7 && indexPath.row > [source count]) { 
     cell.textLabel.text = @""; 
     cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    } else { 
     cell.textLabel.text = [source objectAtIndex:indexPath.row]; 
     cell.selectionStyle = UITableViewCellSelectionStyleBlue; 
    } 

    return cell; 
} 
+0

"ha solo lo stile separatore per creare quell'illusione" Hai completamente ragione. Quindi, penso di voler aggiungere il separatore indietro e rendere l'immagine di sfondo due colonne di colore invece di avere il separatore * in * l'immagine di sfondo ... typeoneerror

+0

Bello, funziona abbastanza bene! Ancora un po 'di ritocchi da fare. http://img517.imageshack.us/img517/5091/picture3lt.png – typeoneerror

+1

non dovrebbe 'if ([numero di fonti] <= 7 && indexPath.row> [numero di sorgenti]) {' be' if ([numero di fonti] ] <= 7 && indexPath.row> ([fonte count] - 1)) {'come il percorso dell'indice inizia da 0 mentre il conteggio inizia da 1 – Alex

0

Credo che il leggero disallineamento della fila superiore è causato dal rimbalzo di scorrimento verticale della tableview. Se lo spegni, la fila in alto dovrebbe essere allineata correttamente.

Inoltre, è possibile restituire solo l'altezza di una cella che comprenderà la tessera nel numero tableview:cellHeightForRow:. Funziona bene sulle celle predefinite.

Problemi correlati