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
做到了
我认为必须有一个更简单的方法。 但至少,这个对我有用。