Je travaille sur un projet sur lequel je dois présélectionner une cellule particulière.
Je peux présélectionner une cellule en utilisant -willDisplayCell
, mais je ne peux pas la désélectionner lorsque l'utilisateur clique sur une autre cellule.
- (void)tableView:(UITableView*)tableView
willDisplayCell:(UITableViewCell*)cell
forRowAtIndexPath:(NSIndexPath*)indexPath
{
AppDelegate_iPad *appDelegte =
(AppDelegate_iPad *)[[UIApplication sharedApplication] delegate];
if ([appDelegte.indexPathDelegate row] == [indexPath row])
{
[cell setSelected:YES];
}
}
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
AppDelegate_iPad *appDelegte =
(AppDelegate_iPad *)[[UIApplication sharedApplication] delegate];
NSIndexPath *indexpath1 = appDelegte.indexPathDelegate;
appDelegte.indexPathDelegate = indexPath;
[materialTable deselectRowAtIndexPath:indexpath1 animated:NO];
}
Pouvez-vous m'aider?
Réponses:
utilisez ce code
Swift 3.0:
la source
willSelectRowAt:
. Voir une réponse plus complète ici: stackoverflow.com/questions/12693402/…Utilisez la méthode suivante dans le délégué de vue de table
didSelectRowAtIndexpath
(ou de n'importe où)la source
indexPathForSelectedRow
s'agit d'une méthode et non d'une propriété.[myTable indexPathForSelectedRow]
. Je parcourais les cellules avant. Merci!Essaye ça:
la source
Il pourrait être utile de faire une extension dans Swift pour cela.
Swift 4 et Swift 5:
Extension Swift (par exemple dans un fichier UITableViewExtension.swift):
Utilisez par exemple:
la source
viewWillAppear()
méthode aide l'utilisateur à comprendre d'où il vient.Veuillez vérifier avec la méthode déléguée si elle est correcte ou non. Par exemple;
pour
la source
Swift 4:
la source
Ceci est une solution pour Swift 4
il suffit d'ajouter
il fonctionne comme un charme
exemple:
la source
En plus de définir la cellule comme sélectionnée, vous devez également informer la tableView que la cellule est sélectionnée. Ajouter un appel à
-tableView:selectRowAtIndexPath:animated:scrollPosition:
votrewillDisplayCell:
méthode: vous pourrez la désélectionner normalement.Assurez-vous d'utiliser UITableViewScrollPositionNone pour éviter un comportement de défilement étrange.
la source
[cell setSelected:YES]
pourrait être omis:selectRowAtIndexPath
s'occupera de l'selected
état de la celluleCela devrait fonctionner:
Assurez-vous simplement que materialTable et tableView pointent vers le même objet.
Les matériaux sont-ils connectés à la tableView dans Interface Builder?
la source
Basé sur la solution des saikirans, j'ai écrit ceci, ce qui m'a aidé. Sur le fichier .m:
Et sur le fichier d'en-tête:
Je ne suis pas très expérimenté non plus, donc vérifiez bien les fuites de mémoire, etc.
la source
Si vous souhaitez sélectionner une cellule de tableau avec le premier clic et désélectionner avec le second, vous devez utiliser ce code:
la source
Swift 4:
la source
self.tableView(tableView, didDeselectRowAt: indexPath)
aprèstableView.deselectRow...
parce qu'il n'a pas été appelé automatiquementSwift 2.0:
la source
essaye ça
la source
placez ce code selon votre code et vous obtiendrez votre cellule désélectionnée.
la source
Peux-tu essayer ça?
Ça a marché pour moi.
la source
Swift 3.0:
En suivant la section sur la conformité au protocole du guide de style de Ray Wenderlich Swift , pour regrouper les méthodes associées, placez cette extension sous votre classe de contrôleur de vue comme ça:
la source
Rapide
la source
la source
Swift 3
J'ai également rencontré cela - lorsque vous naviguez ou vous retournez à la vue tableau, il ne désélectionne généralement pas la ligne précédemment sélectionnée pour vous. J'ai mis ce code dans le contrôleur de vue de table et cela fonctionne bien:
la source
Swift 3/4
Dans ViewController:
Dans une cellule personnalisée:
la source
swift 3.0
la source
Pour que la désélection (DidDeselectRowAt) se déclenche lorsque vous cliquez dessus pour la première fois en raison de données préchargées; vous devez informer la tableView que la ligne est déjà sélectionnée pour commencer, de sorte qu'un premier clic désélectionne ensuite la ligne:
// Swift 3:
la source
Ce que j'ai trouvé, c'est qu'en plus de définir la cellule comme sélectionnée , vous devez informer la vue de table pour sélectionner la ligne au chemin d'index donné.
la source