2013-04-08 13 views
13

Więc pisałem ten kod, aby umieścić zaznaczenie obok rzędu, że chcę wybranej bo chcę wiele wybranych wierszyJak można uzyskać wybrane wiersze z UITableView?

UITableViewCell *cell = [tableView cellForRowAtIndexPath:path]; 

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) { 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} else { 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 

ale kiedy używam metody:

NSArray *selectedIndexPaths = [self.LightsView indexPathsForSelectedRows]; 

to tylko dostaje ostatni wiersz, który kliknąłem. Czy znacznik wyboru nie wybiera?

+1

Nie, wybrany jest wiersz, który został wykorzystany w ubiegłym i nie było jeszcze niezaznaczone. Nic wspólnego z akcesoriami do komórek. Musisz śledzić "wybrane" (nazwijmy je sprawdzone, to byłoby bardziej odpowiednie). –

+2

Upewnij się także, że 'tablicaView: cellForRowAtIndexPath:' rozpoznaje, że komórki mogą być ponownie użyte, i jako takie będzie musiała zresetować 'akcesorType' dla wiersza, stosownie do potrzeb; nie próbuj polegać na 'accessoryType', aby wiedzieć, czy" sprawdziłeś "wiersz, czy nie. Miej oddzielny model, który wspiera twój widok tabeli, śledząc, które wiersze zostały "sprawdzone" i czy powyższy kod aktualizuje ten model, jak również interfejs użytkownika, i posiada 'tableView: cellForRowAtIndexPath:' odnoszą się również do tego modelu. – Rob

Odpowiedz

21

Dla metoda indexPathsForSelectedRows: działało poprawnie, trzeba skonfigurować widok tabeli, aby umożliwić wielokrotne zaznaczenie komórek:

tableView.allowsMultipleSelection = YES; 
Powiązane problemy