2016-04-13 5 views
0

Ich habe ein Problem, wenn ich aus einer Tabellenansicht in eine Ansicht wechseln möchte.Tabellenansicht Inhalt automatisch neu laden

Um das Problem zu erklären, habe ich eine Ansicht namens myObjects, die eine Tabellenansicht enthält, wo einige Benutzerobjekte geladen sind, wenn der Benutzer auf die Zelle eine neue Sicht (objectConsult) mit einem modalen Übergang aufgerufen wird.

In dieser Ansicht findet der Benutzer alle Informationen über sein Objekt, wenn er auf den Zurück-Button klickt, der auch mit einem modalen Übergang verbunden ist, kommt er zurück zu myObjects.

Mein Problem ist, meine Tabellenansicht Zellen jedes Mal neu, wenn ich auf die Zurück-Taste von objectConsul tippen, gelingt es bereits, das Neuladen in Ziel-C zu blockieren, aber in schnell verstehe ich nicht, was ich tun muss, um die zu lösen Problem.

override func viewDidAppear(animated: Bool) { 
      tableView.reloadData() 
    } 


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell:CustomCell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as! CustomCell 
    cell.picture.frame = CGRectMake(5,0,120,103) 

    cell.title.text = repos[indexPath.row].title 

     let i = settings.ImagesCachedArray.indexOf({$0 == repos[indexPath.row].idobjet!})    
     let myImageName = "\(settings.ImagesCachedArray[i!]).png"    
     let imagePath = fileInDocumentsDirectory(myImageName) 
     if let _ = self.loadImageFromPath(imagePath) { 
      cell.picture.image = self.loadImageFromPath(imagePath) 
     } 
     else { 
      let imgzeroresult = UIImage(contentsOfFile: NSBundle.mainBundle().pathForResource("noimage", ofType: "png")!) 
      cell.picture.image = imgzeroresult 
     } 
} 

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    performSegueWithIdentifier("mysegue", sender: self.view) 
} 

jede Hilfe wäre willkommen.

Antwort

2

das Problem ist:

override func viewDidAppear(animated: Bool) { 
     tableView.reloadData() 
} 

Änderung dieses Verfahren für viewDidLoad

override func viewDidLoad() { 
     tableView.reloadData() 
} 
+0

Es funktioniert, können Sie erklären, bitte? – f1rstsurf

+1

@ f1rtsurf 'viewDidAppear', wie der Name schon sagt, wird jedes Mal aufgerufen, wenn die Ansicht auf dem Bildschirm erscheint. Dies bedeutet, dass es auch dann aufgerufen wird, wenn die Zurück-Taste gedrückt wird. 'viewDidLoad' hingegen wird nur beim ersten Aufruf der Ansicht aufgerufen, da diese geladen ist. – kabiroberai

+0

Tolle Erklärungen, danke euch beiden! – f1rstsurf