2017-08-26 1 views
0

J'ai ajouté un pied de page à mon TableView qui est affiché en bas de la vue. Cependant, le pied de page n'est visible que si je défile vers le bas, puis il apparaît.Pied de page ne s'affiche pas sur TableView sauf si je fais défiler

Voici ce dont je parle: Invisible Footer

Je n'ai pas encore peuplé l'TableView, mais je ne pense pas que ce soit un problème. Voici le code que j'ai écrit pour le pied de page:

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

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { 

    footerView.translatesAutoresizingMaskIntoConstraints = false 
    view.addSubview(footerView) 

    //x, y, w, h constraints 
    footerView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true 
    footerView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true 
    footerView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true 
    footerView.heightAnchor.constraint(equalToConstant: 50).isActive = true 

    //Send Button 
    let sendButton = UIButton(type: .system) 
    sendButton.setTitle("Send", for: .normal) 
    sendButton.translatesAutoresizingMaskIntoConstraints = false 
    sendButton.addTarget(self, action: #selector(handleSend), for: .touchUpInside) 
    footerView.addSubview(sendButton) 

    //x, y, w, h Button constraints 
    sendButton.rightAnchor.constraint(equalTo: footerView.rightAnchor).isActive = true 
    sendButton.centerYAnchor.constraint(equalTo: footerView.centerYAnchor).isActive = true 
    sendButton.widthAnchor.constraint(equalToConstant: 80).isActive = true 
    sendButton.heightAnchor.constraint(equalTo: footerView.heightAnchor).isActive = true 

    //Text Field 
    footerView.addSubview(inputTextField) 

    //x, y, w, h Text Field constraints 
    inputTextField.leftAnchor.constraint(equalTo: footerView.leftAnchor, constant: 8).isActive = true 
    inputTextField.centerYAnchor.constraint(equalTo: footerView.centerYAnchor).isActive = true 
    inputTextField.rightAnchor.constraint(equalTo: sendButton.leftAnchor).isActive = true 
    inputTextField.heightAnchor.constraint(equalTo: footerView.heightAnchor).isActive = true 

    // Separator 
    let separatorLineView = UIView() 
    separatorLineView.backgroundColor = UIColor(red: CGFloat(220/255), green: CGFloat(220/255), blue: CGFloat(220/255), alpha: 0.1) 
    separatorLineView.translatesAutoresizingMaskIntoConstraints = false 
    footerView.addSubview(separatorLineView) 

    //x, y, w, h separator constraints 
    separatorLineView.leftAnchor.constraint(equalTo: footerView.leftAnchor).isActive = true 
    separatorLineView.topAnchor.constraint(equalTo: footerView.topAnchor).isActive = true 
    separatorLineView.widthAnchor.constraint(equalTo: footerView.widthAnchor).isActive = true 
    separatorLineView.heightAnchor.constraint(equalToConstant: 1).isActive = true 

    return footerView 
} 

La façon dont je veux le pied de page au travail est de montrer que dès que l'utilisateur accède à la vue, puis déplacer vers le haut du clavier apparaît, et descendez lorsque le clavier est fermé.

Répondre

0

Vous ne devez pas ajouter le footerView comme sous-vue à un autre UIView.

Vous devez supprimer le code suivant:

footerView.translatesAutoresizingMaskIntoConstraints = false 
    view.addSubview(footerView) 

    //x, y, w, h constraints 
    footerView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true 
    footerView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true 
    footerView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true 
    footerView.heightAnchor.constraint(equalToConstant: 50).isActive = true 

Le UITableView se chargera de la mise en place de la vue de pied de page.

Si, comme je le soupçonne, vous avez l'intention d'avoir le footerView épinglé en bas de la vue, vous ne devriez pas retourner cela comme une vue de pied de tableau. Il doit être distinct de la hiérarchie UITableView.

+0

Pouvez-vous élaborer un peu plus sur votre dernière phrase? Si je ne devais pas retourner la vue pied de page, que devrais-je retourner? Autrement dit, si je devais retourner quelque chose du tout. –