2013-04-08 14 views
13

Ben deSeçilen satırları bir UITableView'dan nasıl edinebilirsiniz?

UITableViewCell *cell = [tableView cellForRowAtIndexPath:path]; 

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

birden seçili satırları istediğim için seçilmesini istediğiniz bir satırda yanında bir onay işareti koymak için bu kodu yazdım ama yöntemi kullandığınızda:

NSArray *selectedIndexPaths = [self.LightsView indexPathsForSelectedRows]; 

sadece alır tıkladığım son satır. Onay işareti seçmiyor mu?

+1

Hayır, son aday ve henüz seçilmemiş değildi sırasıdır. Hücre aksesuarlarıyla ilgisi yok. "Seçilmiş" kaydını takip etmelisiniz (onları daha iyi kontrol edelim, bu daha uygun olacaktır). –

+2

Ayrıca, 'tableView: cellForRowAtIndexPath: 'hücrelerin yeniden kullanılabildiğini ve bu nedenle," aksesuarType "sıranın uygun şekilde sıfırlanması gerektiğini de unutmayın; Bir satırı kontrol edip etmediğinizi öğrenmek için 'accessoryType' seçeneğine güvenmeyin. Hangi satırların "kontrol edildiğini" takip ederek yukarıdaki kodun UI ile birlikte modelini güncellemesini ve tablonuzu "tableView: cellForRowAtIndexPath:" ifadesine sahip olan ayrı bir modele sahip olursunuz. – Rob

cevap

21

indexPathsForSelectedRows: yöntem düzgün çalışması için, bir hücre birden seçimine izin veren tablo görünümü yapılandırmak zorunda: Seçilen

tableView.allowsMultipleSelection = YES; 
İlgili konular