2017-06-28 9 views
1

Ich bin in einer Tabellenansicht Einführung und Reparatur der Daten, wenn x gleich 1 wird in die Daten eingeführt werden, gleich 2 wird an die Reparaturdaten übertragen werden, aber wenn ich nach der Implementierung leer war der Tabellenansicht, und meine Delegierten und Datenquelle gibt es einen LinkLade Tabellenansicht Daten

Hier ist meine Download-Datenfunktion ist:

haben
func laodingTableviewData() { 
    self.suggestionTableView.isHidden = true 
    let frame = CGRect(x: 150, y: 283, width: 80, height: 80) 
    let color = UIColor(red: 50.0/255.0, green: 124.0/255.0, blue: 203.0/255.0, alpha: 1) 
    let activityIndicatorView = NVActivityIndicatorView(frame: frame, type: .ballSpinFadeLoader, color: color, padding: 20) 

    self.view.addSubview(activityIndicatorView) 
    activityIndicatorView.startAnimating() 


    if self.x == 1 { 
     DispatchQueue.main.async { 
      print("Start download suggestion data...") 
      self.suggestions = Suggestion.downloadAllSuggestion() 
      self.suggestionTableView.isHidden = false 
      self.suggestionTableView.reloadData() 
     } 

    } else if self.y == 2 { 
     DispatchQueue.main.async { 
      print("Start download repair data...") 
      self.repairs = Repair.downloadAllRepair() 
      self.suggestionTableView.isHidden = false 
      self.suggestionTableView.reloadData() 
     } 

    } 
     activityIndicatorView.stopAnimating() 
} 

ich einen Haltepunkt in self.suggestions = advice.downloadAllSuggestion() gesetzt, ich bin sicher, dass es die Daten abgefangen werden , aber kann nicht in der Tabellenansicht zeigen, bitte helfen, Antwort, danke!

Hier Tabellenansicht Funktion

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "mycell", for: indexPath) as! FirstTableViewCell 

    if x == 1 { 
     cell.suggestions = suggestions[indexPath.row] 
    } else if y == 2 { 
     cell.repairs = repairs[indexPath.row] 
    } 
    return cell 

} 


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    var value = 0 

    switch value { 
    case self.x: 
     value = suggestions.count 
    case self.y: 
     value = repairs.count 
    default: 
     break 
    } 
    return value 
} 
+0

Fügen Sie den Code von cellForRowAtIndexPath & numberRowsInSection Methoden – Subramanian

+1

falsch Fluss sicher, 'downloadAllSuggestion()' ist wahrscheinlich asynchron, bedeuten, dass 'reload()' vor dem Download Finish aufgerufen, dazu führen, dass der Tabellenansicht doesnt Update – Tj3n

+0

@ Tj3n Das tut klingt nicht richtig, da eine asynchrone Methode keinen Rückgabetyp haben sollte. Ich bin auch verwirrt durch was drin ist "Suggestion.downloadAllSuggestion()' –

Antwort

2

In numberOfRowsInSection ist, wird Wert initialisiert mit 0

Und vorbei Fall zu wechseln. es wird immer auf Standard gehen. So numberOfRowsInSection ist immer wieder 0

Ihre Funktion soll so sein.

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    var value = 0 

    if self.x == 1 { 
     value = suggestions.count 
    } else if self.y == 2 { 
     value = repairs.count 
    } 

    return value 
} 
+0

Vielen Dank für Ihre Hilfe! Das Original ist dieser kleine Fehler ... –

1

Laut meinem Verständnis binden Sie Ihre Daten bedingt auf x- und y-Wert. Ihre numberOfRowsInSection Methode sollte auch dasselbe widerspiegeln.

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    if x == 1 { 
     return suggestions.count 
     } else if y == 2 { 
      return repairs.count 
      } 
    return 0 
    } 

Ich hoffe, es hilft. Glückliche Kodierung !!

+0

Vielen Dank für Ihre Hilfe! –

+0

Froh, dass Ihr Problem gelöst wurde !! – luckyShubhra

+0

Danke! Du hast wirklich sehr schnell geantwortet ^^ –