Ho un UITableView con 5 celle a gruppi singoli,consentendo agli utenti di accedere a ulteriori schermate specifiche da ciascuna opzione. Gli utenti torneranno a questa schermata e voglio poter posizionare un segno di spunta sull'ultima cella selezionata e disattivare tutti i segni di spunta precedenti.
Sto cercando di ottenere questo in didSelectRowAtIndexPath:
ma non riesco a farlo bene.
Ci sono alcune risposte disponibili per le celle dinamiche ma nulla per statico, qualcuno può aiutare con questo?
risposte:
2 per risposta № 1Ci sono diversi modi per gestirlo, mauna delle cose più facili da fare è memorizzare i riferimenti alle celle in una raccolta in modo da poter facilmente inviare messaggi a tutte le celle. Ad esempio, è possibile aggiungere una proprietà come la seguente:
@property (strong, nonatomic) IBOutletCollection (NSArray) * celle;
@property (strong, nonatomic) IBOutletCollection(UITableViewCell) NSArray *cells;
e collegarlo a ciascuna delle celle nel file o nello storyboard del pennino. (Se non si utilizza Interface Builder, rilasciare il IBOutletCollection
e compilare l'array autonomamente ovunque crei le celle).
Quindi puoi gestire la selezione come segue:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
for (UITableViewCell *currCell in self.cells)
{
currCell.accessoryType = UITableViewCellAccessoryNone;
}
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
}
1 per risposta № 2
La sintassi corretta per IBOutletCollection è:
@property (strong, nonatomic) IBOutletCollection(UITableview) NSArray *cells;