web-dev-qa-db-fra.com

Définir un pied de page personnalisé avec Swift

J'essaie de définir un pied de page personnalisé pour ma vue de table. J'ai créé le pied de page sur un fichier nib et créé un contrôle pour cela.

class LoginTableFooter: UITableViewHeaderFooterView

Dans viewDidLoad() j'ai écrit ce code

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

Puis j'ai implémenté viewForFooterInSection

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

    return cell
}

viewForFooterInSection n'a jamais été appelé. J'ai aussi essayé d'implémenter viewForHeaderInSection mais il n'a pas été appelé non plus. Avez-vous une idée de ce qui ne va pas? Je n'ai qu'une section dans ma vue de table; Est-il possible/préférable de placer le pied de page directement sur viewDidLoad?

7
J.Doe

Implement - déléguez & source de données pour votre tableview et définissez les deux - 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
}
10
Krunal

Swift 3 Utilisez directement> 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
user7587085

// tout d'abord, vous devez appeler le délégué et la source de données de la vue table. c'est à dire: 

  tableView.delegate = self
  tableView.dataSource = self

// vous devez appeler ce délégué

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