Domanda

    

Questa domanda ha già una risposta qui:

    
            
  •              Elimina i separatori extra sotto UITableView                                      33 risposte                          
  •     
    

Quando si utilizza un UITableView in stile semplice con un numero sufficiente di celle che UITableView non può visualizzarle tutte senza scorrimento, non viene visualizzato alcun separatore nello spazio vuoto sotto le cellule. Se ho solo poche celle, lo spazio vuoto sotto di esse include i separatori.

Esiste un modo per forzare un UITableView per rimuovere i separatori nello spazio vuoto? Altrimenti dovrò caricare uno sfondo personalizzato con un separatore disegnato per ogni cella che renderà più difficile ereditare il comportamento.

Ho trovato una domanda in qualche modo simile qui , ma Non riesco a utilizzare un UITableView raggruppato nella mia implementazione.

È stato utile?

Soluzione

Puoi ottenere ciò che desideri definendo un piè di pagina per la vista tabella. Vedi questa risposta per maggiori dettagli: Elimina i separatori extra sotto UITableView

Altri suggerimenti

Per iOS 7. * e iOS 6.1

Il metodo più semplice è impostare la proprietà tableFooterView :

- (void)viewDidLoad 
{
    [super viewDidLoad];

    // This will remove extra separators from tableview
    self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
}

Per le versioni precedenti

Puoi aggiungerlo a TableViewController (funzionerà per qualsiasi numero di sezioni):

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
     // This will create a "invisible" footer
     return 0.01f;
 }

e se non bastano , aggiungi anche il seguente codice troppo :

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{        
    return [UIView new];

    // If you are not using ARC:
    // return [[UIView new] autorelease];
}

Per Swift:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.tableFooterView = UIView()  // it's just 1 line, awesome!
}

Usando il link di Daniel, ho creato un'estensione per renderla più utilizzabile:

//UITableViewController+Ext.m
- (void)hideEmptySeparators
{
    UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
    v.backgroundColor = [UIColor clearColor];
    [self.tableView setTableFooterView:v];
    [v release];
}

Dopo alcuni test, ho scoperto che la dimensione può essere 0 e funziona anche. Quindi non aggiunge alcun tipo di margine alla fine della tabella. Quindi grazie per questo hack. Ho deciso di pubblicarlo qui poiché non mi piace il reindirizzamento.

Swift Versione

Il metodo più semplice è impostare la proprietà tableFooterView:

override func viewDidLoad() {
    super.viewDidLoad()
    // This will remove extra separators from tableview
    self.tableView.tableFooterView = UIView(frame: CGRectZero)
}

Per Swift:

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

Se usi iOS 7 SDK, questo è molto semplice.

Aggiungi questa riga nel tuo metodo viewDidLoad:

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

L'impostazione del separatorStyle della tabella su UITableViewCellSeparatorStyleNone (nel codice o in IB) dovrebbe fare il trucco.

Uso quanto segue:

UIView *view = [[UIView alloc] init];
myTableView.tableFooterView = view;
[view release];

Fallo in viewDidLoad. Ma puoi impostarlo ovunque.

Quanto segue ha funzionato molto bene per me per questo problema:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {

CGRect frame = [self.view frame];
frame.size.height =  frame.size.height - (kTableRowHeight * numberOfRowsInTable);

UIView *footerView = [[UIView alloc] initWithFrame:frame];
return footerView; }

Dove kTableRowHeight è l'altezza delle celle delle mie righe e numberOfRowsInTable è il numero di righe che avevo nella tabella.

Spero che aiuti,

Brenton.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top