web-dev-qa-db-fra.com

Comment supprimer des cellules vides supplémentaires dans TableViewController, iOS - Swift

Bonjour, j'ai une TableViewController avec deux cellules statiques. Toutefois, une fois affiché, il affiche les deux cellules statiques, puis toutes les autres cellules vides de la vue tableau. Cependant, je ne veux pas afficher ces cellules car elles sont inutiles. Comment masquer le reste des cellules en dehors des deux cellules statiques?

80
Stephen Fox

dans votre fonction viewDidLoad(), ajoutez cette ligne de code:

tableView.tableFooterView = UIView()
296
HorseT

Sélectionnez votre UITableView, accédez à l'inspecteur d'attributs et définissez le style sur Groupé.

 enter image description here

8
bakalolo

Pour ajouter à cela, la raison pour laquelle définir tableFooterView sur UIView() supprime les lignes est que vous définissez un objet UIView() vide sur la propriété. Selon la documentation Apple:

var tableFooterView: UIView?

Par conséquent, définir un UIView () vide n'affichera rien en dessous de vos données pour cette propriété.

Vous pouvez ramener les lignes vides en réinitialisant tableFooterView à la valeur par défaut, comme suit:

tableView.tableFooterView = nil
5
toast

La définition de tableFooterView devrait supprimer les cellules supplémentaires, telles que les vues.

   @IBOutlet weak var tableView: UITableView! {
        didSet {
            tableView.tableFooterView = UIView(frame: .zero)
        }
    }
3
Giang

Vous pouvez également atteindre cet objectif dans Storyboard en faisant simplement glisser une vue dans la zone de pied de page de la vue de table, puis définissez sa hauteur et sa couleur d'arrière-plan sur 1 et désactivez-les respectivement à l'aide de l'inspecteur de propriétés.

(Cela suppose que vous ne pouvez pas ou ne voulez pas simplement utiliser le paramètre de style Groupe pour une raison quelconque. Sinon, procédez comme suit.)

2
quickthyme

Swift 4 En vous basant sur la réponse de HorseT, commencez par contrôler le glisser de votre vue Table dans votre storyboard jusqu'à votre classe View Controller et créez un point de vente appelé tableView. 

@IBOutlet weak var tableView: UITableView!

Ensuite, votre viewDidLoad dans votre contrôleur View devrait ressembler à ceci:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.dataSource = self
    tableView.delegate = self

    tableView.tableFooterView = UIView()
}
2
elarcoiris
tableView.tableFooterView = UIView.init(frame: CGRect.zero)

Appelez ce code à l'intérieur de la méthode viewWillAppear. Et travaillera

1
Mannopson

Basé sur les réponses ci-dessus dans Swift .

tableView.tableFooterView = UIView(frame: .zero)
0
rizwan

Dans Swift 4, vous pouvez supprimer ces lignes inutiles avec un simple code à une ligne:

//tableview refers to your UITableView
tableView.separatorStyle = .none
0
TheSwiftGuy77

Ajoutez simplement:

tableView.tableFooterView = UIView()

Explication:

Ceci est totalement valide et fonctionne parfaitement dans Swift 3.By Comme vous définissez un objet UIView () vide pour la propriété, la définition de tableFooterView sur UIView () supprime les lignes.

0
Tejas

si vous souhaitez supprimer des lignes pour toutes les UITableViews de votre application, ajoutez simplement une extension comme celle-ci:

Swift 4.0

extension UITableView {

override open func didMoveToSuperview() {
    super.didMoveToSuperview()
    self.tableFooterView = UIView()

}
0
mkhoshpour