• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Wir haben den Frühjahrsputz beendet, Ihr auch? Welches Foto zu dem Thema hat Euch dann am Besten gefallen? Hier geht es lang zur Abstimmung --> Klick

TableViewController lädt Daten nach ändern/hinzufügen/löschen nicht

Master123of

Süsser Pfaffenapfel
Registriert
12.01.11
Beiträge
668
Hallo zusammen,

ich bin Anfänger in Sachen iOS Entwicklung (habe bisher mit C# entwickelt). Hoffe ihr könnt mir weiter helfen ich hab schon ganz Google abgesucht :)

Zur Erläuterung hier mal mein Storyboard:

Bildschirmfoto%202014-02-03%20um%2023.10.17.png


Ich gehe also von einem Hauptmenü (Test) in ein TableView (Table) und habe dort eine Detail Ansicht namens Subject.

Die Daten verwalte ich mit einer xcdatamodeld-Datei.

Wenn ich nun Einträge in "Subject" hinzufüge oder verändere und daraufhin wieder "Table" angezeigt wird, ist die Liste immer veraltet. Die Einträge aktualisieren sich erst wenn ich zurück ins Hauptmenü gehe und dort noch einmal "Table" aufrufe.

[self.tableViewreloadData]; wird in der viewDidLoad aufgerufen, das nützt aber leider nichts. Ich habe auch schon andere Methoden versucht um sie aufzurufen aber es klappt einfach nicht, im Debugger geht er sogar zu der Zeile.

Hier ein Auszug aus meinem Code, falls das etwas bringt:

Code:
@interface SubjectsViewController ()

@property (nonatomic,strong)NSArray* fetchedRecordsArray;

@end

@implementation SubjectsViewController

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
        [super viewDidLoad];
        [self.tableView clearsContextBeforeDrawing];
        AppDelegate* appDelegate = [UIApplication sharedApplication].delegate;
        self.fetchedRecordsArray = [appDelegate getAllSubjects];
        [self.tableView reloadData];
}

...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    Subjects * subject = [self.fetchedRecordsArray objectAtIndex:indexPath.row];
    UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foobar"];
  
    cell.selectionStyle = UITableViewCellSelectionStyleBlue;
    cell.textLabel.text = [NSString stringWithFormat:@"%@", subject.name];

    return cell;
}

...

Wäre echt super wenn mir jemand sagen kann was ich falsch mache. Vielen Dank im Voraus.

Gruß

Master123of

EDIT: Hier ein kleines Video welches das Problem verdeutlicht: https://dl.dropboxusercontent.com/u/2228496/TableView.mov
 
Zuletzt bearbeitet:

frostdiver

Zwiebelapfel
Registriert
19.06.12
Beiträge
1.285
ViewDidLoad wird nicht aufgerufen. Du bist ja in einem NavigationController und der vorherige ViewController mit View existiert noch.
Versuche mal viewWillAppear:animated.
 

Master123of

Süsser Pfaffenapfel
Registriert
12.01.11
Beiträge
668
Hallo frostdiver,

Vielen Dank für die schnelle Antwort! Jetzt klappt es beim ändern von Daten aber beim hinzufügen bleibt die Tabelle immer noch beim alten und beim Löschen schreibt er "(null)" anstelle des gelöschten DS.

Code:
- (void)viewWillAppear:(BOOL)animated{
    [self.tableView reloadData];
}

Gruß

Master123of
 

frostdiver

Zwiebelapfel
Registriert
19.06.12
Beiträge
1.285
Erneuerst du auch dein fetchedRecordsArray? Vielleicht solltest du die Daten im Model lassen. Dann musst du nicht aufpassen, dass alles gesynct ist.
 

Master123of

Süsser Pfaffenapfel
Registriert
12.01.11
Beiträge
668
Wie kann ich das erneuern? Muss ich das in der Detail Ansicht oder der Table View machen?
 

Master123of

Süsser Pfaffenapfel
Registriert
12.01.11
Beiträge
668
Ahh vielen Dank, genau das war es. Klappt jetzt alles wie gewünscht.

Gruß

Master123of
 
  • Like
Reaktionen: lx88