Ich erstelle eine Übung basierte App in iOS. Ich stelle fest, dass ich gerne eine Favoritenliste mit einschließen würde. Wie es derzeit aussieht, habe ich eine Übungsbibliothek, wo Sie eine Schaltfläche antippen und sie zu einer Favoritenliste hinzufügen können, auf die über einen Navigationscontroller zugegriffen wird. Ich bin in der Lage, Titel ordnungsgemäß an einen Shop zu übergeben, die dann in der Favoriten-Tabellenansicht platziert werden. Ich kann den spezifischen exerciseViewController
laden, der auf dem Titel der Tabellenansichtzelle basiert und zwischen Durchlauf speichert. Ich habe jedoch ein Problem, wenn ich versuche, Übungen zu löschen. Ich kämpfe seit Stunden.Wie UITableView ordnungsgemäß neu geladen werden?
Dies ist das Szenario:
ich zwei Übungen zu meinen Favoriten hinzugefügt haben: exercise A
, die in der ersten Reihe ist, und exercise B
die in der zweiten ist. Wenn ich jedoch auf die Favoritenliste zugreife, wähle ich exercise A
aus, um deren Details anzuzeigen, beschließe, sie zu ignorieren, und navigiere zurück (zurück) zur Favoritenliste, sie wird nicht korrekt aktualisiert. Während es korrekt die Anzahl der Zeilen lädt (die jetzt 1 ist), zeigt es immer noch exercise A
Titel (es sollte exercise B
Titel anzeigen). Aber wenn ich den ganzen Weg zur Startseite zurück navigiere und die Favoritenübung auswähle, wird sie korrekt angezeigt - jetzt wird nur noch der Titel exercise B
angezeigt. Ich habe versucht, [[self tableview] reload]
in viewWillAppear
(dies scheint die häufigste Antwort zu sein), Schreiben von Benachrichtigungen, Protokolle usw. und habe immer noch dieses Problem. Die einzige Zeit, in der es richtig zu funktionieren scheint, ist, wenn die Favoritenliste über die Homepage aufgerufen wird und viewDidLoad
aufgerufen wird.
Wie kann ich die Tabelle korrekt anzeigen lassen, wenn die Tabelle angezeigt wird und nicht geladen werden muss?
Favoriten Tableview
FavsVC.m
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.tableView reloadData];
NSLog(@"APPEARING");
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"UITableViewCell"];
NSArray *fav = [[NSUserDefaults standardUserDefaults] objectForKey:@"Favorites"];
NSString *name = [fav objectAtIndex:indexPath.row];
cell.textLabel.text = name;
}
return cell;
}
//This the method is in my store, and gets called when I click on an exercise to add or delete.
- (id)addToFavorites:(NSString *)title
{
favoriteTitles = [[NSUserDefaults standardUserDefaults] objectForKey:@"Favorites"];
if ([favoriteTitles containsObject:title]) {
NSLog(@"exercise removed");
//[favoriteTitles removeObject:title];
NSMutableArray *newArray = [NSMutableArray arrayWithArray:favoriteTitles];
[newArray removeObject:title];
[[NSUserDefaults standardUserDefaults] setObject:newArray forKey:@"Favorites"]; //newArray
[[NSUserDefaults standardUserDefaults] synchronize];
} else {
NSLog(@"exercise added");
//[favoriteTitles addObject:title];
NSMutableArray *newArray = [NSMutableArray arrayWithArray:favoriteTitles];
[newArray addObject:title];
[[NSUserDefaults standardUserDefaults] setObject:newArray forKey:@"Favorites"]; //newArray
[[NSUserDefaults standardUserDefaults] synchronize];
}
return self;
}
Danke für die Hilfe haben, das ist mein Problem gelöst. – BradRS
Vergnügen, aber fühlen Sie sich frei, es als die richtige Frage zu haken. – Martol1ni