0

J'ai une application iPhone qui fonctionne correctement dans la version 2.x du SDK. Lorsque j'ai mis à niveau vers la version 3.0, la méthode didSelectRowAtIndexPath n'est plus appelée, de sorte que l'action lorsqu'un utilisateur met en surbrillance une ligne ne se produit pas. Ceci est un UITableViewCell personnalisé qui se trouve dans une plume distincte de UITableView. La source de données et le délégué de données sont correctement câblés dans Interface Builder, et si je le compile à 2.21, cela fonctionne. Sur la version 3.0, cliquer sur la ligne ne fait rien.iPhone - UITableView n'appelant pas la méthode didSelectRowAtIndexPath dans le SDK 3.0

This question, mentionne un problème similaire, mais ils mentionnent un autre premier répondeur qui prend le clic. Je n'ai aucune méthode de premier répondeur connectée à la cellule ou à la table.

Comment puis-je faire fonctionner la table correctement dans les versions 2.x et 3.0? La cellule personnalisée a quelques étiquettes et une image, et je veux juste pouvoir cliquer sur une rangée et montrer les détails pour cette rangée particulière.

+0

Et vous êtes sûr que la propriété allowSelection est définie sur YES? – pix0r

+0

Oui, la propriété allowSelection sur UITableView est définie sur YES. Lorsqu'une ligne est cliquée, elle se met en surbrillance pendant une seconde, puis revient à la normale (non surlignée), mais la méthode didSelectRowAtIndexPath sur le contrôleur de vue n'est pas appelée. –

+0

Avez-vous vérifié si willSelectRowAtIndexPath fonctionne? –

Répondre

1

Vous ne serez probablement pas comme cette réponse trop ...

Certaines choses qui ont travaillé à la section 2.2, ne (vous savez déjà) fonctionne pas dans la version 3.0. Certaines API ont changé, etc ...

Cependant, certaines choses sont différentes car elles n'ont jamais été supposées fonctionner en premier lieu (selon Apple).

Je ne peux pas être sûr qu'un de ces changements est votre problème, mais il pourrait être. Les subtilités ayant trait aux plumes et aux propriétés ont été définitivement affectées.

Mon conseil serait:

Tout d'abord, vérifiez vos connexions nib, Peut-être que vous avez une connexion manquante que 2.2 vous laisser partir avec, mais 3.0 sera pas.

Ensuite, créez une application de test avec une vue de table simple et voyez si vous pouvez la faire fonctionner. Si c'est le cas, vous devriez commencer à ajouter des complexités à partir de votre code dans l'application de test jusqu'à ce qu'elle se brise.

Malheureusement, cela peut prendre du temps. Vous pouvez également poster du code pour voir s'il y a quelque chose que nous pouvons trouver.

+0

J'ai fini par créer une nouvelle plume, en copiant les commandes, et en les recâblant de la même manière. Cela a fonctionné. J'ai fait un diff des fichiers xib et la seule différence majeure dans le nouveau était cette ligne: 3.0 Je ne sais pas pourquoi cela n'a pas été ajouté par XCode quand je enregistré le vieux xib avec la version 3.0.Cela semble être la seule différence et maintenant le xib fonctionne correctement. –

+0

Merci Corey, Vous avez raison! J'ai eu le même problème avec un nouveau contrôleur TableView dans 4.x. Il s'avère que j'avais une sortie de barre d'outils voyous qui n'était pas accrochée correctement. Après avoir supprimé la référence de sortie dans la plume de mon TableViewController, le didSelectRowAtIndexPath a commencé à être appelé. –

0

J'ai eu le même problème. J'ai passé des heures à essayer tout ce que vous pouvez imaginer. Ce qui est amusant, c'est que ça n'a pas été un problème avec mon code. J'utilise Objective Resource et après la mise à niveau vers la version 1.0.1 le problème est parti. Vérifiez toutes vos bibliothèques tierces et assurez-vous que vous utilisez les dernières pour vous assurer que vous avez leurs changements 3.0.

Questions connexes