webentwicklung-frage-antwort-db.com.de

Entfernen Sie den Header von UITableView programmgesteuert und passt die Größe des Inhalts automatisch an, um den entfernten Bereich auszufüllen

Ich habe eine UIButton im Header-Abschnitt der UITableView über den Interface-Builder hinzugefügt und möchte in bestimmten Fällen den Zugriff auf die Schaltfläche entfernen. Ich habe versucht, die .hidden = TRUE-Eigenschaft zu verwenden, aber sie verdeckt nur die Schaltfläche aus der Ansicht und lässt einen Leerraum zurück. Wie entferne ich programmgesteuert den Header von UITableView und habe die Größe der Tabelleninhalte automatisch geändert, um den entfernten Headerbereich auszufüllen?

18
code007

Wenn Sie die Kopfansicht der Tabelle entfernen möchten, setzen Sie die Eigenschaft myTable.tableHeaderView auf null. Wenn es sich tatsächlich um einen Abschnittsheader handelt, müssen Sie nil aus der viewForHeaderInSection-Methode zurückgeben und [myTableView reloadData] aufrufen.

54
Bogatyr

Sie könnten auch tun:

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

Dies scheint für meinen (einzelnen) Abschnittsheader zu funktionieren und vermeidet die Notwendigkeit von reloadData.

Beachten Sie, dass:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

wird immer noch aufgerufen, aber der Rückgabewert scheint ignoriert zu werden.

20
mts

Ich habe eine boolesche Eigenschaft mit dem Namen removeHeader erstellt. Wenn ich meinen Header entfernen möchte, rufe ich ihn an:

func removeSectionHeader() {
        removeHeader = true
        self.tableView.reloadData()
    }

Wenn meine tableView neu geladen wird, ruft sie diese tableView-Delegatenmethode auf:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if removeHeader {
            return 0.0
        } else {
            let height = self.tableView.sectionHeaderHeight
            return height
        }
    }
0
Patrick Ridd