拆分视图控制器更新表视图

我正在使用分割视图控制器。 对于主人,我有导航控制器与表视图控制器作为根视图。 有关详细信息,我将导航控制器与自定义视图控制器作为根视图。 从主我selecttableView行和详细信息视图中显示行详细信息。 从详细信息视图中,我可以使用另一个视图控制器模式segue编辑此行的详细信息。 问题是:如何在详细信息编辑视图(模态)中保存更改后刷新tableView(主)。 当我点击保存button-(IBAction) unwindEditRow:(UIStoryboardSegue *)segue (的细节)被触发。

发生特定事件时,有许多方法可以将消息发送到ViewController。

第一种方法:使用委托模式。 什么是代表? 授权是连接对象并帮助他们与其他对象通信的干净而简单的方式。 换句话说,委托是Objective-C对象的约会服务。 :)有一些有用的链接: Objective-C中的基本概念 , 编写自己的自定义委托以下是声明新协议的方法

 @protocol DetailViewControllerDelegate <NSObject> -(void)itemHasBeenChanged:(id)edittedObject; @end 

在您的DetailViewController中声明您的未来委托:

 @property (weak,nonatomic) MasterViewController <DetailViewControllerDelegate> *delegate; 

在MasterViewController.m中实现itemHasBeenChanged:方法:

  -(void)itemHasBeenChanged:(id)edittedObject{ //editting logic goes here } 

告诉我们的类实现DetailViewControllerDelegate协议,以便知道哪些函数可以按行使用:

 @interface MasterViewController : UITableViewController <DetailViewControllerDelegate> 

完成所有这些步骤后,您可以随时通过以下方式在您的DetailViewController中调用方法:

 [self.delegate itemHasBeenChanged:yourObject]; 

这是我在github上的示例代码

第二种方式

我们可以使用NSNotificationCenter作为自定义协议的替代scheme。 制定自定义协议和注册方法在一个大项目中很难做到,NSNotificationCenter可以免除我们的负担。 NSNotificationCenter使用的主要方法是任何对象都可以向通知中心发送通知,同时任何其他对象都可以在该中心上侦听通知。