2016-08-02 35 views
0

Meine erste iOS-App funktioniert mit einfachen benutzerdefinierten Zellen, aber die Erweiterung zum Filtern von tableView-Zeilen verursacht Verzögerungen und Frustrationen. Online nach Hilfe für Filterzeilen gesucht, dataSource gelesen und Protokolle in Apple Developer Guides delegiert, bisher kein Glück.FiltertabelleView-Zeilen werden nicht neu geladen. TableView

Schiebereglerwert zum Aktualisieren von Tabellenzeilen verwenden. Extrahierte Daten vom Zeilenarray (100 Elemente) zum linefilter Array (20). Dann möchten Sie die Tabellenansicht aktualisieren/neu laden.

Slider wird mit 0 deklariert und alle Zeilenarray-Elemente werden angezeigt. Durch Bewegen des Schiebereglers wird die Anzeige nicht geändert. Wenn der Slider mit say 1 deklariert ist, werden 20 Filterelemente angezeigt.

Ganz neu in Apple/Xcode/Swift, also kein Objective C-Wissen.

Alle Antworten werden mir wahrscheinlich helfen, dorthin zu gelangen. Jim L

Relevante Auswahl Code:

@IBAction func moveSlider(sender: AnyObject) { 
     // Non-continuous ****** 
     _ = false 
     // integer 0 to 5 ****** 
     let slider = Int(lineSlider.value) 
     } 
    } 

// Global Variable ****** 
var slider = 0 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     if slider == 0 {   
      return self.line.count 
     } else { 
      return self.linefilter.count 
     } 
    } 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    {   
     let cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! myTableViewCell 
     if slider == 0 { 
      cell.myCellLabel.text = line[indexPath.row] 
     } else { 
      cell.myCellLabel.text = linefilter[indexPath.row] 
     } 
     cell.myImageView.image = UIImage(named: img[indexPath.row]) 
     return cell   
    } 
    tableView.reloadata() 

Antwort

0

try

wie diese

let slider = Int(lineSlider.value) 
    tableView.reloadData() 
} 

in Ihrer moveSlider Funktion

+0

Hallo, danke zu setzen, aber keine Glück, ich t Nachladen an mehreren Stellen. – jimL

+0

Ich sehe Ihren Filtercode nicht, nach dem Aufruf von reloadData() haben Sie überprüft, ob der Code an cell.myCellLabel.text = linefilter [indexPath.row] oder an cell.myCellLabel.text = line [indexPath.row] geht? –

+0

Es wurde ein Problem gefunden, im if - else Code wird der Schiebereglerwert nicht aktualisiert, wenn der Schieberegler den Wert ändert, er behält den Anfangswert 0. Der Filtercode wird in der Aktion moveSlider aufgerufen, aber zu viel Code, um den Fehler zu verbergen. – jimL