Mam aplikację na iPada, która używa kontrolera UISplitViewController (z UITableView po lewej stronie i widokiem szczegółów po prawej). Mój widok tabeli podświetla zaznaczoną komórkę na niebiesko po dotknięciu jej.Programowo wyróżnij komórkę UITableView
Kiedy wywołać następującą metodę, komórka jest zaznaczona, ale nie podświetlony na niebiesko:
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
spędziłem dosłownie dzień bawiąc się różnymi metodami delegowanego i hacki próbuje komórkę, aby podświetlić programowo tylko jakby był podsłuchany. Nie mogę tego zrobić.
udało mi się prawie tam dostać z tym:
- (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;
}
}
}
To działa tak długo, jak mam to również (w przeciwnym razie pozostaje on wybrany, nawet gdy inna komórka jest na podsłuchu):
- (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;
}
Wiem, że to dziwne i zawiłe obejście. Nie miałbym nic przeciwko, ale nawet nie działa w pełni. Wybrana komórka traci swoje podświetlenie, jeśli jest przewijana poza ekranem, podczas gdy komórka, która została dotknięta, pozostaje podświetlona po przewinięciu poza ekranem.
Jestem absolutnie zaskoczony tym. Jestem pewien, że to obejście nie będzie nawet konieczne, że istnieje o wiele prostsze rozwiązanie.
Czy próbowałeś użyć metody 'setHighlighted: animated:' z 'UITableViewCell'? (Również w tym kodzie, który tutaj umieścisz, nie pokazujesz, jak naprawdę to podkreślasz, np. Co się stanie, gdy ustawisz 'shouldHighlightCell'?) – lnafziger
Napisałeś, że komórka jest zaznaczona, ale nie podświetlona po to wezwanie. Jak to sprawdzasz? – NoilPaw
Wiem, że komórka jest wybrana, ponieważ jej szczegółowy widok jest wyświetlany po prawej stronie mojego podzielonego widoku. – beev