iOS popovers作为菜单教程

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

提前致谢!

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

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

我也在寻找这个问题的答案。 我确实使用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]; 

就这样。 将调用selector languageSetup (在我的例子中)。 当视图控制器消失时,请务必删除通知:

 [[NSNotificationCenter defaultCenter] removeObserver:self]; 

我在viewWillDisappear做到了

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