向父对象表单弹出框发送消息

Posted

技术标签:

【中文标题】向父对象表单弹出框发送消息【英文标题】:send a message to a parent object form popover 【发布时间】:2012-02-19 22:32:32 【问题描述】:

我的 ios 应用程序使用故事板

它有 2 个视图控制器: - 主故事板视图控制器 - 和弹出视图控制器,其中包含一些对象

我在主视图控制器上有一个按钮,它会在我每次运行应用程序时创建程序:

*CGRect buttonFrame = CGRectMake(10., 10., 120., 50.);

oneButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[oneButton setImage:[UIImage imageNamed:[NSString stringWithFormat:@"someImage.png", img]] forState:UIControlStateNormal];
[oneButton setTag:img];
[oneButton setFrame:buttonFrame];
[oneButton addTarget:self action:@selector(pressButton:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:oneButton];*

此按钮的操作会像这样显示我的弹出视图:

*- (void) pressButton:(id)sender 

popoverViewController *popoverFrame = [self.storyboard instantiateViewControllerWithIdentifier:@"myPopoverView"];

popoverWithObjects = [[UIPopoverController alloc] initWithContentViewController:popoverFrame];

[popoverWithObjects presentPopoverFromRect:[sender frame] inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:NO];

*

从现在开始,我无法向我的按钮发送任何消息或结果。 我想对我的程序按钮说(注意 - 我只有这个按钮的发送者 action:@selector(pressButton:) )弹出框返回一些结果或弹出框中对象的一些动作发送任何东西(例如字符串) 或者换句话说,当我与弹出视图上的按钮等任何对象交互时,我想更改父按钮标题标签

【问题讨论】:

【参考方案1】:

使用 NSNotificationCenter。 https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsnotificationcenter_Class/Reference/Reference.html

【讨论】:

【参考方案2】:

您需要使用委托。从SO 中查看我对这个类似问题的回答。

编辑:链接到故事板上的tutorial 和委托模式使用。我对这个SO的原始回答@

【讨论】:

你知道,我试过了。我无法在情节提要应用程序中进行委派...无论如何感谢您的回答。对于链接,它真的很有帮助 如何为父对象进行委托(在我的例子中是按钮) 我认为您对 appDelegate 和其他类的委托模式感到困惑。虽然 appDelegate 在 Storyboard 下不可用,但使用委托模式进行回调仍然是有效的技术。 查看您的代码,我猜“popoverViewController”或“myPopoverView”是您的子视图控制器。你的主视图控制器(你有按钮的地方)是你的父视图控制器。有了这两条信息,您应该能够遵循其他提到的 SO 答案中的模式。我刚刚还编辑了上面的答案,在 Storyboard 上添加了另一个教程链接,该链接说明了如何使用委托模式。 @peter,有关设置委托和委托协议的详细说明,请参阅我的答案 - ***.com/questions/9043801/…。【参考方案3】:

在你的主视图控制器上写一个函数来做你想做的事情怎么样。然后从弹出窗口调用该函数? (即使用'prepare for segue'向弹出框发送主视图控制器的ID,然后使用该ID从弹出框调用主视图上的函数)

【讨论】:

以上是关于向父对象表单弹出框发送消息的主要内容,如果未能解决你的问题,请参考以下文章

通过 npm 脚本生成时从子进程向父进程发送消息

童工如何在Deno中向父进程发送消息?

Js:消息弹出框获取时间区间时间格式easyui datebox 自定义校验表单数据转化json控制两个日期不能只填一个

访问 VBA 弹出子表单以提交条目

SendMessage发送自定义消息及消息响应(VC版)

android弹出快捷语输入开发