2017-02-27 1 views
5

Ich versuche, eine benutzerdefinierte Fußzeile zu meiner Tabellenansicht festzulegen. Ich habe die Fußzeile auf einer Nib-Datei erstellt und eine dafür gesteuerte erstellt.Legen Sie eine benutzerdefinierte Tabellenansicht Fußzeile mit Swift

class LoginTableFooter: UITableViewHeaderFooterView 

In viewDidLoad() schrieb ich diesen Code

let footerNib = UINib(nibName: "LoginTableFooter", bundle: nil) 
     tableView.register(footerNib, forHeaderFooterViewReuseIdentifier: "LoginTableFooter") 

Dann implementiert ich viewForFooterInSection

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
    let cell = self.tableView.dequeueReusableHeaderFooterView(withIdentifier: "LoginTableFooter") 
    let header = cell as! LoginTableFooter 

    return cell 
} 

viewForFooterInSection wurde nie genannt. Ich habe auch versucht, viewForHeaderInSection zu implementieren, aber es wurde auch nicht aufgerufen. Hast du eine Idee was falsch ist? Ich habe nur einen Abschnitt in meiner Tabellenansicht; ist es möglich/besser, die Fußzeile direkt auf viewDidLoad zu setzen?

+0

Haben Sie delegieren Methode aufgerufen von UITableview? – iParesh

+0

Mögliches Duplikat der [UITableViewDelegate-Methoden, die nach der Migration von Swift 3.0 und Xcode 8 nicht aufgerufen werden] (http://StackOverflow.com/questions/40069943/uitableviewdelegate-methods-not-called-after-swift-3-0-and-xcode- 8-Migration) – Rob

Antwort

6

implementieren nennen - delegieren & Datenquelle für den Tableview und legen Sie beide - heightForFooterInSection & viewForFooterInSection

tableView.delegate = self 
tableView.dataSource = self 

// set view for footer 
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
    let footerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 40)) 
    footerView.backgroundColor = UIColor.blue 
    return footerView 
} 

// set height for footer 
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
    return 40 
} 
0

Swift 3 Direkt verwenden> viewForFooterInSection

override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 
    let footerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 40)) 
    footerView.backgroundColor = UIColor.red 

    return footerView 
    } 
0

// erstens müssen Sie die Delegierten und Datenquelle der Tabellenansicht nennen. dh:

tableView.delegate = self 
    tableView.dataSource = self 

// müssen Sie diesen Delegierten

 func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
     return "your expected footer height" 
} 
Verwandte Themen