2016-04-26 11 views
1

ich einen UITableView in einem Controller haben, wo ich seine tableHeaderView-Eigenschaft in viewDidLoad()UITableView-Header versteckt auf beginUpdates() in Swift

let headerView = tableView.dequeueReusableCellWithIdentifier("HeaderView") as! HeaderView 
tableView.tableHeaderView = headerView 

Alle gut funktioniert, bis ich tableView.beginUpdates()/tableView.endUpdates() OR tableView.reloadData() nennen. Header-Bereich ist immer noch da, aber Inhalt wird leer.

Was mache ich falsch? Bitte vorschlagen.

+0

tableHeaderView versteckt rufen, wenn UITableView Scrollen? Hast du UITableView in scrollView? – Hasya

+0

Lassen Sie HeaderView = TableView.dequeueReusableCellWithIdentifier ("HeaderView") als! HeaderView Was bedeutet das, dass Sie Zelle als Header-Ansicht aus der Warteschlange entfernen? –

+0

Möglicherweise müssen Sie die Delegate-Methode 'viewForHeaderInSection' verwenden, um den Header dynamisch zurückzugeben – vadian

Antwort

0

== EDITED 12. Oktober 2016 ==

Sie sollten nicht die Header-Ansicht aus der Warteschlange entfernt. haben stattdessen eine Ansicht Eigenschaft und ordnen diese Ansicht die headerview für Ihre Tableview zu sein:

class SomeViewController: UIViewController { 
    // MARK: - Outlets 
    @IBOutlet var tableView: UITableView! 

    // MARK: - Properties 
    var headerView: UIView! 

    // MARK: - Lifecycle Methods 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     headerView = HeaderView() 
     tableView.headerView = headerView 
    } 
} 

== ORIGINAL ANTWORT - NICHT AUF DIE FRAGE ==

Sie nicht die headerview auf viewDidLoad setzen sollten . Erstellen Sie stattdessen den Header im Delegat, und geben Sie ihn zurück (im folgenden Code wird davon ausgegangen, dass Sie über einen Abschnitt verfügen).

WICHTIG: Sie müssen dequeueReusableHeaderFooterViewWithIdentifier NICHT dequeueReusableCellWithIdentifier

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    let headerView = tableView.dequeueReusableHeaderFooterViewWithIdentifier("HeaderView") as! HeaderView 
    return headerView 
} 
+0

die Frage ist über die 'tableHeaderView' nicht die Überschrift für die Abschnitte – Andrespch

+0

@Andrespch Yep du hast Recht. Die Antwort wurde aktualisiert. – oyalhi

Verwandte Themen