2016-07-01 8 views
0

Momentan habe ich den folgenden Code, der ein Objekt speichert, aber ich möchte die Tabellenansicht aktualisieren/neu laden. Die Schaltfläche ist nicht an eine Zelle/Zeile, die es oben rechts in meinem Navigationscontroller (Plus-Symbol) istWie kann ich Tabellenansicht innerhalb meiner TableViewController innerhalb der Tastenaktion neu laden?

Hinweis: Alles passiert innerhalb der gleichen Szene daher alle Ereignisse an den Übergang, wo ich Tabellendaten neu laden konnte aus die Frage.

@IBAction func addWeek (sender: UIButton){ 

    let newnumber:Int = routineWeeks.count + 1 

    // save data using cor data managed object context 
    if let managedObjectContext = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext { 
     week = NSEntityDescription.insertNewObjectForEntityForName("Weeks", inManagedObjectContext: managedObjectContext) as! Weeks 

     week.weekNumber = newnumber 

     do { 
      try managedObjectContext.save() 
     } catch { 
      print(error) 
      return 
     } 
    } 

    //currently not reloading table with new data 
    tableView.reloadData() 

    //print information in console 

    print("end of save function, dismiss controller") 

} 

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

    let cellIdentifier = "Cell" 
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) 

    // Configure the cell... 
    cell.textLabel?.text = "Week \(routineWeeks[indexPath.row].weekNumber)" 

    return cell 
} 

UPDATE Dank Stackoverflow-Community für mich in der richtigen Richtung.

routineWeeks.append(week) 
print("this is a new week:\(week)") 
tableView.reloadData() 
+0

Können Sie den Code Ihrer Delegate-Funktion Ihres 'tableView' verknüpfen? Und was füllt Ihren 'tableView'? – Chajmz

+0

Für mich sieht es so aus, als müsste es die Daten neu laden. Haben Sie versucht, einen Haltepunkt in 'tableView: cellForRowAtIndexPath()' zu setzen? Können Sie den Code einfügen, in dem Sie die Daten aus den Stammdaten erhalten? – Andrej

+0

@Andrej mit Core-Daten richtig –

Antwort

0
routineWeeks.append(week) 
print("this is a new week:\(week)") 
tableView.reloadData() 
0

Sie scheinen "routineweeks" nie "Woche" hinzuzufügen.

EDIT: Sie sollten die Daten in routineWeeks (von CoreData) direkt vor Ihrem TableView.ReloadData neu laden.

+0

Es wird zu den Kerndaten hinzugefügt, wenn ich schließe die App und öffne sie erneut, die neue Zeile/Zelle wurde hinzugefügt. –

+0

Laden Sie dann routineWeeks mit den coreData-Daten neu. –

0

Ich weiß nicht, ob es Ihnen helfen wird oder nicht, aber ich hatte die gleichen Probleme und ich fügte Refresher (hinzuzufügen „Pull To Refresh“ -Funktion)

In meiner Klasse:

override func viewDidLoad() { 
     super.viewDidLoad() 

     // Pull to refresh - DEBUT 
     tableFiches.addPullToRefreshWithAction { 
      NSOperationQueue().addOperationWithBlock { 
       //sleep(1) 
       NSOperationQueue.mainQueue().addOperationWithBlock { 
        self.loadMyData() // My func here to load data 
        self.tableFiches.stopPullToRefresh() 
       } 
      } 
     } 
     // Pull to refresh - FIN 

    } 

func loadMyData(){ 
    // request here 
    let recupJSON = JSON(value) // my data 
    if let resData = recupJSON["Data"].arrayObject { 
         //print("OK2") 
    self.ArrayFiches = resData as! [[String:AnyObject]] // Attribute json ==> ArrayFiches 
    } 
    if self.ArrayFiches.count > 0 { 
    self.tableFiches.reloadData() 
    } 
} 

und wenn ich meine Daten wollen neu zu laden, die ich benutze:

tableFiches.startPullToRefresh() 

und es funktioniert :)

0

Sie aktualisieren das routineWeeks-Array nicht. Aktualisieren Sie es mit Ihren neuen Daten, bevor Sie das TableView neu laden.

Verwandte Themen