2016-10-04 3 views
0

abzuwählen, wie ich eine Zeile deaktivieren kann, wenn eine andere Zeile hier ausgewählt wird i diesesWie ausgewählte Zeile

if ff.isVisitedd{ 
     cell.accessoryType = .Checkmark 
    }else{ 
     cell.accessoryType = .None 
} 

in meinem cellForRowAtIndexPath haben und diese in DidSelectRowAtIndexPath

if let cell = tableView.cellForRowAtIndexPath(indexPath) { 
     let selectedRows = tableView.indexPathsForSelectedRows! as? [NSIndexPath] 
     let ff: Card! 
     ff = cards[indexPath.row] 
     ff.isVisitedd = true 
     cell.accessoryType = .Checkmark 
    } 

Antwort

0

Wie pro mein Verständnis, möchten Sie das Häkchen eines zuvor ausgewählten Zelle entfernen, wenn eine andere Zelle ausgewählt ist. Da Sie in Ihrer cellForRowAtIndexPath-Methode die accessoryType bereits korrekt eingerichtet haben, hat jede neue Zelle einen korrekten Häkchenstatus. Die einzige verbleibende Aufgabe besteht darin, das Häkchen bei vorhandenen Zellen zu entfernen, falls vorhanden. Sie können die vorhandenen Zellen aus der visibleCells der Tabellenansicht abrufen. Eine mögliche Lösung ist:

tableView.visibleCells.filter { $0 != cell }.forEach { $0.accessoryType = .None } 

Wenn Sie es vorziehen for-Schleife:

for visibleCell in tableView.visibleCells where visibleCell != cell { 
    visibleCell.accessoryType = .None 
} 
+0

Wo wird diese gehen –

+0

Inside the 'if let' @benfo –

+0

Wow, das hat funktioniert, danke! –

1

Swift 3

Sie können die Methode deselectRow(at:,animated:) verwenden.

Swift 2

deselectRowAtIndexPath(indexPath:,animated:)

+0

Ja, das wird es deaktivieren, wenn es tapped..i abzuwählen werden soll, wenn eine andere Zeile abgegriffen wird –

Verwandte Themen