gpt4 book ai didi

ios/xcode/核心数据 : How to refresh detail view in Master Detail setup

转载 作者:行者123 更新时间:2023-11-29 02:06:17 28 4
gpt4 key购买 nike

我想刷新 MasterDetail 项目中的详细信息页面。 (在模态 Controller 中进行编辑后应刷新详细信息。)我知道将代码块放在详细信息页面中的何处以强制刷新。我只是不知道要使用什么代码来执行此操作。

此详细信息页面没有表格 View 。它只使用文本标签和图像标签。

在新获取时刷新数据的 NSFetchedResultsController 不在这个 View Controller 中,而是在派生此详细信息的 TableView 中。

有没有办法刷新类似[[self tableView] reloadData]的详情页的数据;在表格页面中?

这是呈现模态视图 Controller 的代码,我需要在其中放置代码块。

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: editVC];
// Do whatever setup you want to here for your title bar, etc
[self presentViewController:nav animated:YES completion:^{
//CODE TO EXECUTE TO REFRESH CONTROLLER GOES HERE
}];

我可以输入什么代码来刷新 Controller ?

我认为它与刷新文件中任何位置的详细 View Controller 的代码相同。

感谢您的任何建议。

编辑:我可能错了,上面的代码将在解除模态时执行。它可能只是在动画完成时执行。

但是,我仍在寻找代码来刷新一个 View Controller ,该 View Controller 不是来自类似于 [[self tableView] reloadData] 的 fetchedresultscontroller 的 tableview;如果这里有 tableview。

编辑2:

我正在尝试在两个不同的地方刷新以下用于编辑的保存方法(它确实成功保存了数据并关闭了模态编辑 Controller 。它只是在模态编辑屏幕消失后不更新详细信息屏幕)。 (我的理解是 self 在这种情况下对于 self.presentingViewController 来说真的很短,它会执行实际的解雇。)

if ([self.managedObjectContext save:&error]) {
// Dismiss View Controller
NSLog(@"Presenting controller%@",[self.presentingViewController class]);
ItemDetailVC *detailVC = [[ItemDetailVC alloc] init];//VC instantiated to be able to call method but this is probably an error as per Mundi's comment below
[detailVC reloadViewData];
NSLog(@"About to dismiss modal editVC");
[super dismissViewControllerAnimated:YES completion:^{
NSLog(@"in middle of dimissing");
ItemDetailVC *detailVC = [[ItemDetailVC alloc] init];
[detailVC reloadViewData];
}

这里是VC的reloadViewData方法的详细介绍。

详细.m

 -(void)reloadViewData {
//short version of UI
self.itemLabel.text = self.item.name;
self.itemSub.text = self.item.sub;
NSLog(@"In detail controller and about to call setneedsdisplay");
[self.itemLabel setNeedsDisplay];
[self.itemSub setNeedsDisplay];
}

此方法确实会触发详细信息 Controller 中的 reloadViewData(基于日志输出),但不会更新 View 。

最佳答案

是的,完成 block 将在 Controller 呈现之后运行,而不是在 Controller 被关闭之后运行。

有几种方法可以做到这一点:

  • 您可以让详细 View Controller 成为编辑 View Controller 的委托(delegate)。解雇后,编辑 VC 将更改通知详细 VC,然后可以更新其 UI;
  • 另一种可能性是简单地保存已编辑的托管对象并让详细信息 VC 监听通知NSManagedObjectContextDidSaveNotification
  • 一个更简单的方法是让细节 VC 成为编辑 VC 的关闭按钮的响应者,并在那里处理 UI 更新。

没有与 TableView 的 reloadData 等效的方法。就像在表格 View 中您必须编写自己的代码以将正确的数据放入表格单元格的标签中一样,您还必须编写自己的代码来填充自定义标签和详细 View 的 View 。只需创建一个方法 reloadViewData 并使用它来初始化和更新您的 View 。

关于ios/xcode/核心数据 : How to refresh detail view in Master Detail setup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29761428/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com