Est-ce que les cellules du UITableViewspectacle sur l'espace vide lorsque vous faites défiler vers le bas?
Si tel est le cas, le problème peut provenir de l’encart ajouté au UITableViewcontrôleur de navigation que vous avez dans votre vue. L'encart est ajouté à la vue de tableau afin que le contenu soit placé sous la barre de navigation lorsqu'aucun défilement n'a eu lieu. Lorsque le tableau fait défiler, le contenu défile et s'affiche sous une barre de navigation transparente. Ce comportement n'est bien entendu souhaité que si la vue tableau démarre directement sous la barre de navigation, ce qui n'est pas le cas ici.
Une autre chose à noter est qu'iOS ajuste l'encart de contenu uniquement pour la première vue dans la hiérarchie de vues si elle est UIScrollViewou si elle est descendante (par exemple UITableViewet UICollectionView). Si votre hiérarchie de vues comprend plusieurs vues de défilement, automaticallyAdjustsScrollViewInsetsapportera des ajustements uniquement au premier.
Voici comment modifier ce comportement:
a) Générateur d'interface
- Sélectionnez le contrôleur de vue
- Ouvrir l'inspecteur d'attributs
Il existe une propriété appelée «Ajuster les inserts de vue de défilement» dans l'inspecteur d'attributs d'IB (lorsqu'un contrôleur de vue est sélectionné) qui est activée par défaut. Décochez cette option:

(Image gracieuseté de Dheeraj D )
Je ne sais pas quelle version de Xcode a introduit cette option (je ne l'ai pas repérée dans les notes de publication), mais elle est au moins disponible dans la version 5.1.1.
Edit: Pour éviter toute confusion, c'était la troisième option mentionnée dans les commentaires
b) Par programme
Ajouter ceci à ie viewDidLoad(crédits à la réponse de Slavco Petkovski et au commentaire de Cris R )
// Objective-C
self.automaticallyAdjustsScrollViewInsets = NO;
// Swift
self.automaticallyAdjustsScrollViewInsets = false
c) Cela pourrait être pertinent pour les anciens élèves
Vous pouvez soit résoudre ce problème en ajoutant
tableView.contentInset = UIEdgeInsetsZero
//Swift 3 Change
tableView.contentInset = UIEdgeInsets.zero
Ou si vous utilisez IB et si la barre de navigation n'est pas transparente (ne peut pas le dire sur la capture d'écran)
- Sélectionnez le contrôleur de vue
- Ouvrir l'inspecteur d'attributs
- Dans les options du contrôleur de vue, section Prolonger les bords, désélectionnez «Sous les barres supérieures»