我正在编写一个iPad应用程序并且对于目标C来说是一个新手。我正在尝试使用popover作为视图控制器中的菜单。我知道如何设置弹出窗口并在其中有一个tableview供用户从中选择项目。但是,我不知道如何将信息传递回容纳弹出窗口的容器视图。 didSelectRowAtIndexPath
将在UITableViewController
内调用,该{{1}}可能位于弹出视图控制器内。有人能指出我如何将这些信息带回容器的正确方向吗?
提前致谢!
答案 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
我认为必须有一种更简单的方法。但至少,这个对我有用。