J'ai un Voici mon code dans utableview code> avec plusieurs cellules. Sur chaque cellule, j'ajoute des boutons de manière dynamique en fonction du nombre de matrices. Donc, lorsque je clique sur un bouton, je suis capable d'obtenir la valeur code> tag code> du bouton. Mais comment obtenir le indéniables code> de cette cellule? -Cellfortindindexpath code>: p>
8 Réponses :
Vous pouvez utiliser utableview code> 's indexpathforcell: code> méthode comme [TableView IndexPathForCell: cellule]; code>. Bonne chance! P>
Où devrais-je utiliser cette ligne?
Utilisez-la comme: p>
Il se bloque à Nsindexpath * IndexPath = [Afficher indexPaRForCell: cellule];
Ajoutez-vous votre bouton directement dans la cellule? Si non, vous devez aller à Superview jusqu'à ce que vous atteigniez la cellule comme Button.Superview.superview et ainsi de suite. Veuillez vérifier le type de cellule pendant le débogage, cela aidera.
NON NON NON NON ! Il suffit de ne pas boucler à travers Superviews! J'avais la même chose. On dirait que dans iOS 7, la hiérarchie a changé comme étant ajoutée Apple UitailViewCellscrollview: curieuxFind.com/blog/646 Vous devez donc ajouter une autre .superview. @ Cw0007007 qui fonctionne, mais seulement si vous avez la propriété Self.TableView et mon écran dispose d'un tas de tableviettes de table qui le rend plus délicieux.
dans ios8..Ce donnera toujours 0. S'il vous plaît voir ceci ....
Mettez ce code dans la méthode d'action du bouton:
NSIndexPath *indexPath = [yourtableviewname indexPathForCell:(UITableViewCell *)sender.superview]; NSLog(@"%d",indexPath.row);
Mais chaque fois son index zéro de retraite
Dans votre code, vous ajoutez un bouton pour voir la raison pour laquelle il donne 0 valeurs signifie que Sender.superview prise en tant que vue que je pense.
hey j'ai essayé comme ça c'est bien fonctionnement maintenant dans le bouton Action
dans ios8..Ce donnera toujours 0. S'il vous plaît voir ceci .... Merci à tout ce que je résous cela en utilisant ci-dessous Code
dans ios8..Ce donnera toujours 0. S'il vous plaît voir ceci ....
votes
NSIndexPath *indexPath = [panelTableView indexPathForCell:(UITableViewCell *)sender.superview.superview];
NSLog(@"%d",indexPath.row);
Allllll des réponses Voici mauvais et vous ne devriez pas être en boucle via superviews. Exemple classique, avec iOS 7 Apple a changé le Utilisez cela à la place: P>
TableViewCell Code> Hiérarchie et votre application va maintenant planter! P>
Oh. C'était une réponse si courte et unique que je n'ai presque pas manqué, mais c'est vraiment vraiment bon. Le but est que le bouton contient des informations sur l'emplacement de son écran, qui peut être facilement convertie en un chemin d'index.
Voulez-vous vous qualifier "mauvais"? Une dépendance fixe sur [Someview SuperView] pourrait casser le temps (même si la hiérarchie de la vue entière est contrôlée par le développeur d'applications). Mais en boucle jusqu'à ce que l'on trouve la cellule de vue de la table est certainement en sécurité maintenant et à l'avenir.
Je suggère d'ajouter une propriété à votre classe d'implémentation UitailViewCell personnalisée pour stocker le fichier Industrial. Ensuite, lorsque votre délégué de CellfrotorDindexPath incendie dans votre tableViewController, définissez la propriété IndexPath pour cette cellule.
CustomTableViewCell.h: P>
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
customTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"customTableViewCell" forIndexPath:indexPath];
// Do whatever you want with your cell
cell.indexPath = indexPath;
return cell;
}
Non, ne faites pas cela. Si la vue Table de la table permet d'être supprimée, insérée ou déplacée, alors la propriété indexpath code> de cette cellule personnalisée sera fausse.
J'ai essayé le maximum de réponses données, mais à l'adresse et j'utilise généralement pour aller à la manière généralisée et idéale comme suit:
Super ... dans Swift Set Hitpoint = Sender.convert (cgpoint.zero, à: autoblename) Laissez IndexPath_Select = self.flight_detail_table.indexpathfornor (AT: Hitpoint) Imprimer ("IndexPath: (Décrire: (décrit: indexpath_select))" )
Aucune de ces réponses semble une solution très propre. La façon dont je voudrais implémenter cela consiste à utiliser le modèle de délégué. Le contrôleur d'affichage est le délégué de la cellule, ce qui signifie que vous laissez la cellule lui-même gérer la touche appuyez sur la touche, et il indique à son délégué lorsque le bouton a été enfoncé afin qu'il puisse le gérer, mais il veut.
Disons que vous avez une vue de table où chaque cellule représente un objet puis tout ce que vous avez à faire dans votre classe est ajoutez une propriété appelée personne code>, et lorsque vous appuyez sur la touche, vous souhaitez afficher un profil de cette personne. Tout ce que vous avez à faire est celui-ci: p> bouton-ButtonPresseddler code> qui est un bloc Transférer une instance de personne code>, et lorsque vous créez votre bouton et ajoutez la cible faire quelque chose comme ceci: p>
Un moyen facile de le faire est de créer une extension uableview. Voir ma réponse à Cette question pour voir comment cela peut être fait.