当特定事件发生时,您可以通过多种方式向 ViewController 发送消息。
第一种方法:使用委托模式。什么是委托?
委托是一种连接对象并帮助它们与其他对象进行通信的简洁明了的方法。换句话说,委托是针对 Objective-C 对象的约会服务。 :) 有一些有用的链接:Basic concepts in Objective-C, Writing your own custom delegate
以下是声明您的新协议的方式:
@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];
Here is my example code on github
第二种方式
我们可以使用 NSNotificationCenter 作为自定义协议的替代方式。制作自定义协议和注册方法在大型项目中很难做到,而 NSNotificationCenter 可以让我们摆脱这种负担。 NSNotificationCenter 使用的主要方法是任何对象都可以向通知中心发送通知,同时任何其他对象都可以在该中心监听通知。