如何在适用于iOS 5.0+应用的iPad Storyboard中创建弹出窗口?
Xcode项目模板(实用程序应用程序)已经有一个设置,但我似乎无法弄清楚Apple是如何使用它的。我试图模仿它,但只有错误。我甚至查看了Apple的开发网站,但只得到过时的代码导致警告和构建错误。
我有CBMainView
和CBMasterView
(已包含主视图除外)和UIToolbar
UIToolbarButton
。我需要用户点击UIToolbar
上的按钮,然后我的320x300 Popover(CBMasterView
)。
如何使用Xcode Storyboards执行此操作?教程,答案,代码或链接都很受欢迎!
答案 0 :(得分:31)
在iOS 5之前,人们需要通过模态演示(以及一堆代码)使用First Responder显示另一个UIViewController
。
要在Xcode的故事板模式(iOS 5+)中创建一个弹出框,请使用UIButton
或UIToolbarButton
并在按钮和您想要的UIViewController
之间创建一个Storyboard Segue >弹出过
在按钮和另一个UIViewController
之间创建一个segue很简单。方法如下:
UIViewController
。您应该会看到一条浅蓝色线条,从按钮延伸到鼠标尖端。将蓝线拖动到所选的ViewController后,会出现一个小黑色菜单。此菜单显示不同的segue选项。选择Popover
。
如果一切都正确完成,当选择按钮时,此segue应在Connections Inspector中可见:
您创建的UIViewController
也应该具有小于整个屏幕的自定义尺寸。您可以通过选择视图控制器并将其大小属性设置为freeform
或master
(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的不透明度,可能会转换为交叉溶解)
到目前为止我见过的最简单的方式!