2012-10-23 15 views
5

Zrobiłem tableView, w którym muszę wybrać wiele opcji. Opcje są zaznaczone, ale kiedy przewijam widok tabeli, opcja znacznika wyboru znika, a niektóre inne wiersze wyświetlają ten znacznik. To jest mój kod w didselectedrowAtindex metody table_option jest UITableView i selectedcells jest NSMutableArrayTyp akcesorium UITableview znika podczas przewijania

[table_option deselectRowAtIndexPath:indexPath animated:YES]; 
NSNumber *rowNsNum = [NSNumber numberWithUnsignedInt:indexPath.row]; 
if ([selectedCells containsObject:rowNsNum] ) 
{ 
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark) 
     cell.accessoryType = UITableViewCellAccessoryNone; 
    else 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 



    [selectedCells removeObject:rowNsNum]; 
    [email protected]"Select"; 
    // cell.accessoryType = UITableViewCellAccessoryNone; 

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

    [selectedCells addObject:rowNsNum]; 
    [email protected]"Selected"; 
    // cell.accessoryType = UITableViewCellAccessoryCheckmark; 

} 



[table_option reloadData]; 

pls pomóc wkrótce

Odpowiedz

12

Trzeba sprawdzić komórka jest już wybrany lub nie w metodzie cellForRowAtIndexPath. Ten problem występuje, ponieważ tableView ponownie używa komórek. Proszę wpisać poniższy kod w swojej metodzie cellForRowAtIndexPath, to rozwiąże problem.

NSNumber *rowNsNum = [NSNumber numberWithUnsignedInt:indexPath.row]; 
if ([selectedCells containsObject:rowNsNum] ) 
{ 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
else 
{ 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} 
+1

Awesome, dziękuję .. to rozwiązać problem ... dzięki znowu – wasim

+1

Z przyjemnością. Dziękuję za komentarz. :) –

+0

"containsObject" to klucz, ratujący mnie przed mnóstwem prac. –

0

W moim przypadku właśnie zachodzącego accessoryType = UITableViewCellAccessoryCheckmark w cellForRowAtIndexPath nie działa.

Problem występuje, gdy UITableView osiągnie pierwszy element i jeśli spróbujesz przewinąć więcej, widoczne komórki zostaną opuszczone, a ich znaczniki znikną.

NSNumber *rowNsNum = [NSNumber numberWithUnsignedInt:indexPath.row]; 

[cell setAccessoryType:UITableViewCellAccessoryNone];// tricky part is this line 

if ([selectedCells containsObject:rowNsNum] ) 
{ 
    cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
else 
{ 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} 
0

Sprawdź ten przykład

cell.accessoryType = UITableViewCellAccessoryNone; 
for (int x = 0; x < selectedIds.count; x++) { 
    if ([[selectedIds objectAtIndex:x] isEqualToString:[[source objectAtIndex:[indexPath row]] objectForKey:@"id"]]) 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
} 
Powiązane problemy