Ho un'app per iPad che utilizza un UISplitViewController (con UITableView a sinistra e una vista di dettaglio a destra). La mia vista tabella evidenzia la cella selezionata in blu quando si tocca su di essa.Evidenziare in modo programmatico la cella UITableView
Quando chiamo il seguente metodo, la cella è selezionata, ma non evidenziata in blu:
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
ho passato letteralmente giorni armeggiare con i vari metodi delegato e hack cercando di ottenere il cellulare per evidenziare programatically solo come se fosse stato tappato. Non posso farlo
Sono riuscito a quasi arrivare a questo:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (shouldHighlightCell)
{
NSIndexPath *indexPathForCellToHighlight = [NSIndexPath indexPathForRow:0 inSection:0];
if ([indexPath isEqual:indexPathForCellToHighlight])
{
cell.selected = YES;
shouldHighlightCell = NO;
}
}
}
Funziona finché ho anche questo (altrimenti rimane selezionato anche quando si tocca un'altra cella):
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSIndexPath *ip = [NSIndexPath indexPathForRow:0 inSection:0];
if ([[self.tableView cellForRowAtIndexPath:ip] isSelected])
{
[[self.tableView cellForRowAtIndexPath:ip] setSelected:NO];
}
NSIndexPath *iToTheP = indexPath;
return iToTheP;
}
So che questa è una soluzione strana e complicata. Non mi dispiacerebbe, ma non funziona nemmeno completamente. La cella selezionata perde la sua evidenziazione se viene spostata fuori dallo schermo, mentre una cella che è stata toccata rimane evidenziata quando viene fatta scorrere fuori dallo schermo.
Sono assolutamente sconcertato da questo. Sono sicuro che questa soluzione alternativa non dovrebbe nemmeno essere necessaria, che esiste una soluzione molto più semplice.
Hai provato a utilizzare il metodo 'setHighlighted: animated:' di 'UITableViewCell'? (Inoltre, nel codice che includi qui, non mostri come lo stai effettivamente facendo notare. Cioè cosa succede quando imposti 'shouldHighlightCell'?) – lnafziger
Hai scritto, che la cella è selezionata ma non evidenziata dopo questa chiamata. Come lo controlli? – NoilPaw
So che la cella è selezionata perché la sua vista dettagliata è visualizzata a destra della mia vista divisa. – beev