2017-04-10 2 views
1

Ich versuche, eine TableView mit table.reloadData() in SWIFT 3 zu aktualisieren. Ich schaffte es, das funktioniert vor einiger Zeit, aber jetzt hörte es einfach aus der Arbeit Blau. Keine Fehler, keine Warnung, nichts.SWIFT - table.reloadData() nicht/nicht mehr funktionierend

override func viewWillAppear(_ animated: Bool) 
{ 
    print("MainVC > viewWillAppear") 

    super.viewWillAppear(animated) 
    initializeCollectionView() 
} 

func initializeCollectionView() 
{ 
    print("MainVC > initializeCollectionView") 

    projectsArray = [] 
    getDocumentDirectoryContent() 

    if(projectsArray.count > 0) 
    { 
     print(projectsArray.count) 

     //For testing only - To make sure the array is not empty 
     for var i in 0..<projectsArray.count 
     { 
      print(projectsArray[i].project_name) 
     } 

     cvProjects.isHidden = false 
     ivMainVCPlaceholder.isHidden = true 
    } 
    else 
    { 
     cvProjects.isHidden = true 
     ivMainVCPlaceholder.isHidden = false 

     cvProjects.reloadData() 
    } 
} 

Jedes Mal, wenn die App startet er das nennt es die Daten von documentDirectory packt und füllt die projectsArray Array mit Objekten. Das funktioniert gut.

Die initializeCollectionView wird in viewWillAppear genannt, weil die tableView auch aufgefrischt werden soll, wenn ein Kind viewController das Feld verwiesen. Es wird auch vom Fass genannt:

@IBAction func btnRefreshCollectionAction(_ sender: Any) 
{ 
    print("MainVC > btnRefreshCollectionAction") 

    initializeCollectionView() 
} 

Das Problem ist jetzt die Tabelle nicht aktualisiert wird weder wenn ein Kind viewController wird noch entlassen, wenn ich auf btnRefreshCollectionAction tippen.

Das Array projectsArray ist jedoch in initializeCollectionView nicht leer.

Mein erster Gedanke war, die Xcode-Aktualisierung zu beschuldigen, die ich ausgeführt habe, bevor ich bemerkte, dass das funktioniert, aber normalerweise, wenn es nach einem Upgrade irgendwelche Probleme gibt, gibt es Warnungen und/oder Fehler.

Irgendwelche Ideen?

+1

Nun, Sie rufen nur 'reloadData' auf, wenn' projectsArray.count' 0 ist. – dan

+1

Das ist vielleicht eine grobe Beobachtung, aber sollten Sie die Daten nicht erneut laden, wenn die Anzahl der abgerufenen Objekte> 0 ist ? Weil, wie ich aus dem Code sehen kann, der Sie geliefert haben, wenn das Array nicht leer ist, laden Sie nicht neu! –

+0

Jetzt fühle ich mich dumm: | Und ich habe es eine Zeitlang angeguckt. Danke Leute: D – daydr3am3r

Antwort

1

Das liegt daran, dass Sie die Reload-Methode nur aufrufen, wenn das Array leer ist. Wenn Sie Objekte in einem Array haben, führen Sie einen anderen Code aus, laden ihn jedoch nicht neu. Schreiben Sie entweder die Reload-Methode in viewWillAppear, oder laden Sie die Reload-Methode in den Zustand If. Das sollte funktionieren.

Verwandte Themen