2016-09-19 2 views
-1

Ich habe eine Tabellenansicht, ich möchte ausgewählte Tabellenansicht ausgewählte Zellfarbe ändern, und Zellfarbe nicht in der Scroll-Tabellenansicht geändert. Es gibt meinen Code:Store TableView ausgewählt Zeile

override func tableView(tableView: UITableView, didSelectRowAtIndexPath 
indexPath: NSIndexPath) { 
    let selectCell = tableView.indexPathForSelectedRow 
     self.selectedCell.append(selectCell!) 
for i in selectedCell 
     { 
      if(!(i .isEqual(indexPath))) 
      { 
       let currentCell = tableView.cellForRowAtIndexPath(i)! as UITableViewCell 

       currentCell.backgroundColor = UIColor.lightGrayColor() 
      } 
     } 

das ist Code-Absturz bei Scroll-Tabellenansicht.

+0

Erstellen Sie eine Variable, die den aktuellen indexpath.row bei der Auswahl von didSelectRowAtIndexPath speichert. Überprüfen Sie nun innerhalb von cellForRowAtIndexPath auf den aktuellen indexpath.row. Wenn die gespeicherte indexpath.row übereinstimmt, ändern Sie die Farbe. – Tuhin

+0

Sie müssen alle ausgewählten Indexfarbe ändern ??? –

+0

Wenn Sie alle ausgewählten Zeilenfarben ändern müssen, speichern Sie den ausgewählten Index in einem Array in der Methode didSelectRowAtIndexPath und überprüfen Sie in der Methode cellForRowAtIndexPath, ob der Indexpfad im Array vorhanden ist oder nicht, und behandeln Sie ihn entsprechend –

Antwort

2

Ihr Code scheint mir sehr seltsam. Sie müssen die Hintergrundfarbe aller anderen Zellen nicht jedes Mal festlegen, wenn eine ausgewählt ist. Definieren Sie Ihre celectedCells als Wörterbuch vom Typ Int:Bool, so dass Sie es zu true für jeden indexpath.row wie folgt einstellen:

var selectedCells = [Int: Bool]() 

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    if let cell = tableView.cellForRowAtIndexPath(indexPath) { 
     cell.backgroundColor = UIColor.lightGrayColor() 
     selectedCells[indexPath.row] = true 
    } 
} 

und dann in Ihrem cellForRowAtIndexPath Methode überprüfen, dass Wörterbuch die Backgroundcolor, wie dies einzustellen:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("YourCellIdentifier", forIndexPath: indexPath) 

    if selectedCells[indexPath.row] == true { 
     // Color for selected cells 
     cell.backgroundColor = UIColor.lightGrayColor() 
    } else { 
     // Color for not selected cells 
     cell.backgroundColor = UIColor.whiteColor() 
    } 
    //Rest of your Cell setup 

    return cell 
} 
Verwandte Themen