0
所以我在我的UITableView
上有一个按钮,打开和关闭一个过滤器,该过滤器通过名为isLiked
的BOOL
进行过滤。我可以显示所有结果,或只显示指定为喜欢的结果。我可以点击任何单元格,然后进入详细信息页面,在此可以打开或关闭BOOL
。在从详细视图返回时反映对NSFetchedResultsController结果的更改?
如果我处于喜好列表中,然后点击其中一个,然后将其最喜欢的状态设置为关闭状态,然后再次回到喜欢过滤的状态,该状态并未消失。如果我关闭并重新打开过滤器,则该条目消失。
我希望在该视图返回时立即发生更改,而不需要打开和关闭筛选器以使其生效。我怎样才能做到这一点?一些相关的代码如下:
这里是当我打开过滤器和关闭时调用的方法:
- (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]);
}
如果您需要更多代码,请让我知道。
我尝试添加一个委托,但呼吁在这一点上表'reloadData'已经没有任何影响。我仍然需要开启和关闭过滤器以获得所需的更改。 – Luke 2013-02-26 11:51:07
取消顶一些对象后出来的观点时,我也越来越崩溃,我认为这是期望他们仍然存在。非常困惑。 – Luke 2013-02-26 11:55:38
抱歉让你感到困惑。你使用'UINavigationController'机制还是以模态方式呈现细节视图? – ilmiacs 2013-02-26 11:59:24