wake-up-neo.com

Fußzeilenansicht in UITableView ausblenden

Ich habe daran gearbeitet, die Fußzeile auszublenden für eine Weile. Mein Problem ist, dass ich eine Schaltfläche in der Fußzeile habe, wenn ich auf die Schaltfläche klicke. Ein Abschnitt wird als letzter Abschnitt hinzugefügt. Die Schaltfläche wird auch in den neu erstellten Abschnitt verschoben. Nun möchte ich die Fußzeile im vorherigen Abschnitt der Tabelle ausblenden nach dem Update der Abschnitte.

footerView.hidden = YES

Ich habe dies in der Button-Aktion verwendet, aber es funktioniert nicht.

17
New Xcoder

Es gibt vier Lösungen. Sie sind,

Lösung 1:

tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger )section {
    return 1.0;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger )section {
    return 1.0;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

Lösung 2:

Sie können die Höhe der Fußzeile/Kopfzeile über den Schnittstellen-Builder unter der Registerkarte Größe festlegen.

Lösung 3:

set contentInset property.

self.tableView.contentInset = UIEdgeInsetsMake(-20, 0, -20, 0);

Es wird verwendet, um den Rand von oben und unten zu berühren.

Lösung 4:

implementieren Sie das unten, stellen Sie die Werte gemäß Ihrer Bedingung ein. 0.0 wird nicht akzeptiert. Der niedrigere Wert sollte 1,0 sein.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger )section {
    if(section == 0) {
       return 6;
    } else {
       return 1.0;
    }
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger )section {
    return 5.0;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
36
Shamsudheen TK

Das sollte es tun

tableView.tableFooterView.hidden = YES;
14
shabbirv

Dies kann durch die Implementierung der Delegat-Methode Erreicht werden

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
  return CGFLOAT_MIN;
}
7
J.Hong

Swift 3.0 Lösung, die auch die lästige 1px-Grenze zwischen der vorherigen Zelle und dem folgenden Header entfernt.

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
    return nil
}
2
Tim Newton

Bezüglich der Antwort von @JHong, Swift4 Version (iOS 11.3):

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return .leastNonzeroMagnitude
}

Vergleich mit der @ Tim Newton-Antwort:

  • es ist nicht erforderlich, titleForFooterInSection aufzurufen.
  • CGFloat.leastNormalMagnitude -> .leastNonzeroMagnitude vereinfachen (mehr Swifty IMO)
2

in Swift4:

self.tableView.tableFooterView = nil
1
Mohamad.j

Wenn Sie keine benutzerdefinierten Ansichten verwenden, geben Sie nil von tableView:titleForFooterInSection: und 0 von tableView:heightForFooterInSection: zurück.

@property(nonatomic, strong) NSString *footerTitle;
@property(nonatomic, assign) BOOL shouldHideFooter;
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    return self.shouldHideFooter ? nil : self.footerTitle;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return self.shouldHideFooter ? 0 : UITableViewAutomaticDimension;
}
0
bteapot