我在mainviewcontroller中有一个按钮,当这个按钮被点击时,我想在另一个视图控制器上调用一个方法。下面的图像显示了我的场景,在没有navigation的情况下,单击Green按钮调用预览控制器VC1接收方法。我只需要调用这个方法就行了!

发布于 2016-01-19 21:11:30
现在,当调用VC1的方法时,在它返回之前,从VC1激发一个PostNotification,并在MainView控制器中传递你想要的参数。
发布于 2016-01-19 21:48:35
@RobAu给出了正确的答案,因为你可以使用NSNotificationObserver并从任何地方调用。
我使用的另一个替代方案是使用协议,非常简单。
只需在子控制器中声明一个协议。在启动视图时,将父控制器作为委托。现在,可以从子控制器的任何位置调用委托方法
下面是我使用的例子(在我的例子中,所有的子控制器都是同一类型的)
//ChildClass.h file of child class
@protocol updateIndex <NSObject>
-(void)updateMediaId:(NSString*)currentMediaId;
@end
@interface ChildClass : UIViewController
@property NSString *imageID;
@property id updateIndexDelegate;
@end
//ChildClass.m file for child class where you want to call the delegate method(我调用了viewDidAppear方法)
-(void)viewDidAppear:(BOOL)animated{
[self.updateIndexDelegate updateMediaId:_imageID];
}并在父类的ParentClass.m文件中这样使用自己的委托
ChildClass *childObject = [[ChildClass alloc] init];
childObject.delegate = self;并像这样定义委托方法
-(void)updateMediaId:(NSString*)currentMediaId {
NSLog(@"%@",currentMediaId);
}享受编码
https://stackoverflow.com/questions/34877340
复制相似问题