如何使用Xcode Storyboards创建Popovers

时间:2011-11-23 21:07:23

标签: ipad ios5 xcode4 storyboard uipopovercontroller

如何在适用于iOS 5.0+应用的iPad Storyboard中创建弹出窗口?

Xcode项目模板(实用程序应用程序)已经有一个设置,但我似乎无法弄清楚Apple是如何使用它的。我试图模仿它,但只有错误。我甚至查看了Apple的开发网站,但只得到过时的代码导致警告和构建错误。

我有CBMainViewCBMasterView(已包含主视图除外)和UIToolbar UIToolbarButton。我需要用户点击UIToolbar上的按钮,然后我的320x300 Popover(CBMasterView)。

如何使用Xcode Storyboards执行此操作?教程,答案,代码或链接都很受欢迎!

3 个答案:

答案 0 :(得分:31)

在iOS 5之前,人们需要通过模态演示(以及一堆代码)使用First Responder显示另一个UIViewController

要在Xcode的故事板模式(iOS 5+)中创建一个弹出框,请使用UIButtonUIToolbarButton并在按钮和您想要的UIViewController之间创建一个Storyboard Segue >弹出过

在按钮和另一个UIViewController之间创建一个segue很简单。方法如下:

  1. 单击故事板中的按钮,然后单击 Control + 拖动按钮,直至选择UIViewController。您应该会看到一条浅蓝色线条,从按钮延伸到鼠标尖端。
  2. 将蓝线拖动到所选的ViewController后,会出现一个小黑色菜单。此菜单显示不同的segue选项。选择Popover

    Popover Segue Menu

  3. 如果一切都正确完成,当选择按钮时,此segue应在Connections Inspector中可见:

  4. Use Popover instead of Modal or Push

    您创建的UIViewController也应该具有小于整个屏幕的自定义尺寸。您可以通过选择视图控制器并将其大小属性设置为freeformmaster(320 x 850)来设置自定义大小。

答案 1 :(得分: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];

这就是全部。将调用selector languageSetup(在我的例子中)。请确保在视图控制器消失时删除通知:

[[NSNotificationCenter defaultCenter] removeObserver:self];

我在viewWillDisappear

中执行此操作

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

答案 2 :(得分:0)

如果您使用故事板与IOS8,请看看这篇文章,为我解答!

How to present a modal atop the current view in Swift

简而言之:您创建一个单独的弹出视图,为背景提供低(或无)不透明度的颜色,并使用模态segue从主视图连接到弹出视图。

然后在故事板中,单击segue,然后在attibute检查器中:将演示文稿更改为“当前上下文”(如果使用大于0的不透明度,可能会转换为交叉溶解)

到目前为止我见过的最简单的方式!