2017-08-18 2 views
2

Wie man Schalter von der Zelle verbirgt, wenn Barbutton Titeländerung in getanes wie möglich ändert?Wie man Schalter von der Zelle versteckt?

override func setEditing(_ editing: Bool, animated: Bool) { 
    super.setEditing(editing,animated:animated) 

    if self.isEditing{ 

     self.editButtonItem.title = "Done" 
     tableview.setEditing(true, animated: true) 
     tableview.reloadData() 

    } 
    else{ 
     self.editButtonItem.title = "Edit" 
     tableview.setEditing(false, animated: false) 

    } 


} 

Antwort

0

Im setEditing Methode, die Sie auf diese Weise für alle sichtbaren Zeilen

tableView.visibleCells.forEach{ cell in 
     //define your custom cell class 
     If let customCell = cell as? YourCustomCellCalss{ 
     //call here the method to show/hide the switch or whatever you have for hiding it 
    customCell.hideSwitch() 
    } 
} 

zugreifen Aber es wird nur dann sichtbar, Zeilen ändern, so dass Sie eine Überprüfung für self.isEditing in Sie cellForRowAt Methode hinzufügen müssen für alle Zeilen, die den Schalter

Wenn mein Code unterscheidet sich von Ihrer benutzerdefinierten Zelle Implementierung, dann bitte mehr von Ihren Code in der Frage hinzufügen

zu zeigen, werden aus der Warteschlange entfernt wird nach dem Scrollen/verstecken

Lassen Sie mich wissen, wenn Sie etwas brauchen

+0

Die Ansicht manipulieren (die Zelle) ist immer eine schlechte Idee. In dem Moment, in dem der Benutzer scrollt, erhalten Sie unerwartetes Verhalten. – vadian

+0

Scrolling ruft cellForRow jedes Mal auf, sodass Sie kein unerwartetes Verhalten erhalten, wenn Sie es in der cellForRow-Methode behandeln. Es ist auch keine gute Idee, ganze Tabelle neu zu laden, nur um eine Steckdose zu verbergen, wenn die Zelle Daten enthält, kostet es mehr Speicherverbrauch – Woof

+0

'reloadData' berücksichtigt auch nur die sichtbaren Zellen und es kann angenommen werden, dass es mehr gibt als eine Zelle, die einen Schalter enthält. – vadian

0

Sie können versteckte Eigenschaft von Switch verwenden. so was.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "democell", for: indexPath) as! DemoViewCell 
     cell.selectionStyle = .none 
     if self.isEditing{ 
      cell.yourSwitch.isHidden = false 
    } 
    else{ 
     cell.yourSwitch.isHidden = false 
    } 


     return cell 
    } 
Verwandte Themen