232 votes

Comment faire pour désactiver le défilement dans UITableView table lorsque le contenu s’adapte à l’écran

J'ai un peu (regroupés tables dans mon application iphone (uniquement sur la partie de l'écran et a ajouté avec Interface Builder cependant, ne pas sous-classé de UITableViewController) que 80% du temps sont de petite taille et s'adapte à l'écran. Quand la table s'adapte à l'écran, j'aimerais désactiver le défilement, pour le rendre un peu plus propre. Mais si la table est hors de l'écran (lorsque les lignes sont ajoutés plus tard), je voudrais activer le défilement à nouveau (parce que sinon, vous ne pouvez pas voir que le contenu.)

Est-il un moyen de faire cela? Je n'arrive pas à le comprendre. Je ne sais faire:

tableView.scrollEnabled = NO;

mais je ne suis pas sûr de l'endroit où, ou si je dois calculer la table de la taille d'un objet ou quelque chose pour que tout cela fonctionne.


Mise à jour

: Voici la solution qui a finalement fonctionné pour moi:

if (table.contentSize.height < table.frame.size.height) {
   table.scrollEnabled = NO;
 }
else {
   table.scrollEnabled = YES;
 }

J'exécute ce code après l'appel de reloadData sur la table, et il calcule la bonne taille et semble fonctionner.

table.cadre.taille.la hauteur est la taille réelle de l'objet (vous pouvez le voir dans Interface Builder) affichée sur l'écran, tandis que le tableau.contentSize.la hauteur est sur les hauteurs de: l'en-tête, pied de page et la hauteur de chaque cellule de ajouté.

387voto

Kevin Ballard Points 88866

Je pense que vous voulez définir `` .

44voto

Roberto Ferraz Points 707

Vous pouvez vérifier le nombre de cellules visibles à l'aide de cette fonction:

- (NSArray *)visibleCells

Cette méthode retourne un tableau avec les cellules qui sont visibles, de sorte que vous pouvez compter le nombre d'objets dans ce tableau et comparer avec le nombre d'objets dans votre table.. si elle est égale.. vous pouvez désactiver le défilement à l'aide de:

tableView.scrollEnabled = NO;

@Ginny dit.. nous pouvons avoir des problèmes avec la partie visible de cellules, de sorte que cette solution fonctionne mieux dans ce cas:

tableView.scrollEnabled = (tableView.contentSize.height <= CGRectGetHeight(tableView.frame));

Dans le cas où vous utilisez la mise en page automatique cette solution faire le travail:

tableView.alwaysBounceVertical = NO.

12voto

codercat Points 5586

Essayez ceci

0voto

Bourne Points 4260

La hauteur par défaut est 44.0f d’une cellule de tableview que je crois. Vous devez avoir votre source de données à la main dans un tableau ? Ensuite il suffit de cocher si [comte de tableau] * 44.0f dépasse le cadre de limites et si donc la valeur tableview.scrollEnabled = NO, sinon, définissez-le sur Oui. Le faire où vous trouver la source de données pour ce particulier tableview.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X