iOS popovers作为菜单教程

时间:2012-02-14 21:42:50

标签: objective-c ios cocoa-touch ipad uipopovercontroller

我正在编写一个iPad应用程序并且对于目标C来说是一个新手。我正在尝试使用popover作为视图控制器中的菜单。我知道如何设置弹出窗口并在其中有一个tableview供用户从中选择项目。但是,我不知道如何将信息传递回容纳弹出窗口的容器视图。 didSelectRowAtIndexPath将在UITableViewController内调用,该{{1}}可能位于弹出视图控制器内。有人能指出我如何将这些信息带回容器的正确方向吗?

提前致谢!

3 个答案:

答案 0 :(得分:1)

您需要使用委托。在这种情况下,这是非常常用的模式。我通过一个例子回答了这个SO类似的问题。如果你以后还不清楚,请告诉我。

答案 1 :(得分:0)

好吧,我假设您UIPopoverController的代表是您的内容视图,如果是,您可以从parentViewController请求UITableView属性,然后将其转换为{{ 1}}获取它的委托(在你的情况下,委托将是容器视图)。

答案 2 :(得分:0)

我也在寻找这个问题的答案。我确实使用NSNotification来解决它。

以下是:

显示弹出窗口的View Controller应该注册以接收通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(languageSetup) name:SPVWChangeLanguage object:nil];

// languageSetup是将被调用的函数,SPVWChangeLanguage是您将在弹出视图控制器中定义的字符串

我在viewDidAppear

中添加了这一行

现在,在弹出视图控制器中,当用户选择表格中的内容时,添加此行:

[[NSNotificationCenter defaultCenter] postNotification: [NSNotification notificationWithName: SPVWChangeLanguage object:self]];
在解雇弹出窗口之前

[self.popOverController dismissPopoverAnimated:YES];

这就是全部。将调用选择器languageSetup(在我的情况下)。请确保在视图控制器消失时删除通知:

[[NSNotificationCenter defaultCenter] removeObserver:self];

我在viewWillDisappear

中执行此操作

我认为必须有一种更简单的方法。但至少,这个对我有用。