ios - vuoto - notepad++ eliminare righe vuote




come nascondere le righe vuote in un UITableView e modificare l'altezza di Uitableview in base a righe non vuote (8)

Ho risolto il problema creando un semplice UIView come vista footer con lo stesso colore di sfondo dello sfondo della tabella:

(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease];
    view.backgroundColor = [UIColor whiteColor];
    return view;
}

Forse devi disabilitare anche lo scorrimento nella vista tabella.

Ho un paio di problemi con il mio UITableView .

  1. Quando aggiungo un UITableview sulla mia pagina, per impostazione predefinita viene visualizzato un numero fisso di righe, anche se ho impostato il numero di righe nella sezione come 1 . Tutte le righe vengono visualizzate tranne la prima riga e tutte sono righe vuote. Quindi, voglio nascondere tutte le righe vuote in UItableview .

  2. In base alle righe non vuote, voglio cambiare l'altezza del mio UItableView .


Per Swift:

override func viewWillAppear(animated: Bool) {
    self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

// OR 

    self.tableView.tableFooterView = UIView()
}

Per C #: (Si prega di non dimenticare di aggiungere using CoreGraphics; )

public override void ViewWillAppear(bool animated)
{
    base.ViewWillAppear(animated);
    this.sampleTableview.TableFooterView = new UIView(frame: CGRect.Empty);
}

Se la tua vista tabella ha più sezioni, puoi provare a utilizzare questo:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    if (section == tableView.numberOfSections - 1) {
        return [UIView new];
    }
    return nil;
}

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

Sei sicuro di utilizzare lo stile UITableViewStyleGrouped ?

Perché per impostazione predefinita è impostato su UITableViewStylePlain che mostra anche le celle vuote dopo la visualizzazione delle celle piene.


nel metodo che restituisce il numero di righe, specificare il count modo dinamico. Ad esempio, se si vuole popolare la tabella con un NSArray denominato arrayForRows:

return [arrayForRows count]; // inside the method which returns the number of rows.

Quanto sopra è un semplice esempio che popola una tabella con una matrice come origine dati. Non ci sono righe vuote. Nella tabella vengono visualizzate solo molte righe in base al count di elementi nell'array che popola la tabella.

Penso che tu intenda l'altezza della fila nel tavolo. Puoi giocare con l'altezza delle file usando il metodo:

(CGFloat)tableView:(UITableView  *)tableView heightForRowAtIndexPath:(NSIndexPath  *)indexPath

leggi http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UITableViewDelegate/tableView:heightForRowAtIndexPath :

EDIT: ah ora ho quello che stai cercando di ottenere. Stai cercando di evitare di mostrare le righe vuote separate con quelle linee di separazione giusto? Vedi questo post:

come visualizzare una tabella con zero righe in UITableView


NUOVA RISPOSTA

In Swift 2.2, 3.0 e versioni successive, effettuare le seguenti operazioni:

tableView.tableFooterView = UIView()

VECCHIA RISPOSTA SOTTO. MANTENUTO PER POSTERITÀ.

Se è necessario utilizzare UITableViewStylePlain e non si utilizza footerView per altri scopi, è possibile utilizzare la seguente soluzione semi-dirty se è abilitato ARC.

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] init];

    return view;
}

Se hai disattivato ARC, utilizza quanto segue:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *view = [[[UIView alloc] init] autorelease];

    return view;
}

Questo crea un invisibile footerView, che appare immediatamente dopo l'ultima cella piena di dati.


- (void) viewDidLoad
{
  [super viewDidLoad];
  self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
}

[self.SomeTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

Utilizzare questo per sbarazzarsi delle linee se UITableView è vuoto.





uitableview