2012-10-23 30 views
5

kaydırılırken kayboluyor Birden fazla seçenek seçmem gereken bir tablo oluşturdum. Seçenekler seçildi, ancak tablo görünümünde kaydırdığımda onay işareti seçeneğinin kaybolması ve diğer bazı satırlarda bu onay işareti görüntülenir. Bu didselectedrowAtindex yöntemde benim kodudur table_optionUITableView ve selectedcellsNSMutableArrayUITableview aksesuar türü

[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 yakında

Sen hücreyi kontrol etmeniz gerekir

cevap

12

zaten seçili veya olmasın cellForRowAtIndexPath yönteminde yardımcı olduğunu. Bu sorun oluyor çünkü tableView hücreleri yeniden kullanıyor. Lütfen aşağıdaki kodu cellForRowAtIndexPath yönteminize yazın, sorunu çözeceksiniz. Sadece cellForRowAtIndexPath yılında accessoryType = UITableViewCellAccessoryCheckmark işe yaramadı ayarı Benim durumumda

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

Müthiş, teşekkür sürü .. Bu zevkle bir kez daha – wasim

+1

... teşekkürler sorunu çözmek. Yorum için teşekkürler. :) –

+0

"includesObject" bir anahtardır, beni birçok işten kurtarıyor. –

0

.

Sorun, UITableView ilk öğeye ulaştığında ve daha fazla kaydırma yapmaya çalıştığınızda ortaya çıkar, görünür hücreler düşer ve onay işaretleri kaybolur.

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

Kontrol Bu örnek

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; 
}