首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Objective C对子Viewcontroller方法调用父Viewcontroller?

如何使用Objective C对子Viewcontroller方法调用父Viewcontroller?
EN

Stack Overflow用户
提问于 2016-01-19 20:52:33
回答 2查看 709关注 0票数 0

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

EN

Stack Overflow用户

发布于 2016-01-19 21:48:35

@RobAu给出了正确的答案,因为你可以使用NSNotificationObserver并从任何地方调用。

我使用的另一个替代方案是使用协议,非常简单。

只需在子控制器中声明一个协议。在启动视图时,将父控制器作为委托。现在,可以从子控制器的任何位置调用委托方法

下面是我使用的例子(在我的例子中,所有的子控制器都是同一类型的)

代码语言:javascript
运行
复制
//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方法)

代码语言:javascript
运行
复制
-(void)viewDidAppear:(BOOL)animated{
    [self.updateIndexDelegate updateMediaId:_imageID];
}

并在父类的ParentClass.m文件中这样使用自己的委托

代码语言:javascript
运行
复制
ChildClass *childObject = [[ChildClass alloc] init];
childObject.delegate = self;

并像这样定义委托方法

代码语言:javascript
运行
复制
-(void)updateMediaId:(NSString*)currentMediaId {
    NSLog(@"%@",currentMediaId);
}

享受编码

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34877340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档