如何告诉 UIViewController 在 UIPopOverController 中按下了按钮?

Posted

技术标签:

【中文标题】如何告诉 UIViewController 在 UIPopOverController 中按下了按钮?【英文标题】:How can you tell an UIViewController that a button is pressed in an UIPopOverController? 【发布时间】:2011-04-27 18:03:57 【问题描述】:

我认为标题是自我解释的。 我有一个 UIPopOverController,它是一个表格视图,当我选择一个单元格时,我想告诉它 UIViewController。

有简单的解决方案还是我需要 KeyValueObserving 或通知?

【问题讨论】:

【参考方案1】:

从 tableview 发布 NSNotification 并将 UIViewController 添加为观察者。

【讨论】:

认为这是最简单的方法。【参考方案2】:

您可以根据自己的选择使用两种方法之一移动。

首先:使用委托/协议。 http://www.thepensiveprogrammer.com/2010/05/objective-c-protocols-and-delegates.html

第二个:将你的 UIViewController 设置为你的 UIButton 的目标。

例如

[btn addTarget:myController action:@selector(ActionWillBePerformedInController:) forControlEvents:UIControlEventTouchUpInside];

【讨论】:

【参考方案3】:

发布一个 NSNotification 会很好......你也可以在你的 UITableViewController 类中创建一个回调对象和选择器。

你可以用回调对象和回调选择器初始化你的 UITableViewController

initWithTarget:(id)theTarget andSelector:(SEL) theSelector

...将值保存到属性中

然后从你的 tableView 中的 didSelectRowAtIndexPath... 调用

[self.target performSelector:self.selector];

使用这种方法,您可以根据需要定义自己的回调方法。从创建弹出框的 ViewController 类中,您可以执行类似的操作...

[[MyTableView alloc] initWithTarget:(self) andSelector:@selector(popoverControllerDidRequestClose)];

【讨论】:

以上是关于如何告诉 UIViewController 在 UIPopOverController 中按下了按钮?的主要内容,如果未能解决你的问题,请参考以下文章

将UIViewController呈现为UIModalPresentationFormSheet和U IModalPresentationOverCurrentContext

如何在 UIViewController 中居中 UIScrollView

UITableViewController 子视图:告诉 pushViewController 拥有 UIViewController

如何使用社交框架呈现来自 SKscene 的 UIViewController?

Swift:继承 UIViewController 的根视图

如何告诉 MySQL 优化器在派生表上使用索引?