所以我的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]);
}
如果您需要更多代码,请告知我们。
答案 0 :(得分:0)
从详细信息视图返回后,您需要立即重新加载表格视图的数据。
一种常见技术是使用委托。使表视图控制器成为详细视图控制器的委托。然后,在详细信息视图控制器viewWillDisappear:
中,您可以调用委托的reloadData
方法。