所以我有一个按钮,UITableView
可以打开和关闭过滤器,按被BOOL
调用的isLiked
. 我可以显示所有结果,或者只显示指定为喜欢的结果。我可以点击任何单元格并进入一个详细信息页面,我可以在其中BOOL
打开或关闭它。
如果我在点赞列表中并且我点击了一个,然后将其收藏状态关闭,然后再次返回到点赞过滤,它并没有消失。如果我关闭并再次打开过滤器,该条目就会消失。
我希望在我退出该视图后立即进行更改,而不是需要打开和关闭过滤器才能使其生效。我怎样才能做到这一点?一些相关代码如下:
这是我打开和关闭过滤器时调用的方法:
- (IBAction) filterLiked: (id) sender
{
if (isDisplayingLiked) {
// Revert to the predicate that only removes disliked entries.
[_fetchRequest setPredicate: [NSPredicate predicateWithFormat: @"isDisliked == 0"]];
NSError *error;
if (![self.fetchedResultsController performFetch: &error]) NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
// Update the tableView and update state variables.
[self.tableView reloadData];
isDisplayingLiked = NO;
[_showLikedButton setTitle: @"Liked"];
} else {
// Revert to the predicate that only shows liked entries.
[_fetchRequest setPredicate: [NSPredicate predicateWithFormat:@"isLiked == 1"]];
NSError *error;
if (![self.fetchedResultsController performFetch: &error]) NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
// Update the tableView and update state variables.
[self.tableView reloadData];
isDisplayingLiked = YES;
[_showLikedButton setTitle: @"All"];
}
}
这是我在详细视图中打开或关闭“喜欢”状态时调用的代码:
- (IBAction) changeLikedSwitch: (id) sender
{
UISwitch *likedSwitch = (UISwitch *) sender;
if ([likedSwitch isOn]) {
[_selectedQuote setIsLiked: [NSNumber numberWithBool: YES]];
} else {
[_selectedQuote setIsLiked: [NSNumber numberWithBool: NO]];
}
NSError *error;
if (![[[CDManager sharedManager] managedObjectContext] save:&error]) NSLog(@"Saving changes failed: %@, %@", error, [error userInfo]);
}
如果您需要更多代码,请告诉我。