IOS:故事板中的 Popover 控制器和 Class

IOS: Popover Controllers in Storyboard and Class

我正在尝试使用弹出控制器在应用程序中进行一些额外的导航。由于故事板似乎没有单独的 popover 控制器,因此我在故事板中创建了一个 UIViewController。然后我创建了一个popoverclass,popoverVC。弹出窗口 class 没有出现在身份检查器中的 classes 的下拉列表中,用于情节提要中的 VC,但是当我输入它时,它似乎需要,即在关闭时并重新打开情节提要,VC 仍然与弹出窗口关联 class。

但是,当我尝试按住 Ctrl 键并单击从情节提要中 VC 中的元素拖动到 Assistant Editor 中弹出窗口 VC class 中的方法或属性时,它不会拿。

在带有 class 的故事板中 link 一个 ViewController 的正确方法是什么?作为一个相关问题,虽然我在情节提要中将 VC 的宽度设置为窄,但应用程序忽略了该宽度并加载了弹出窗口全屏。

这不能仅通过情节提要来实现,而是应用子容器概念。

您应该创建一个 UIView(容器)并将其添加到应该包含弹出窗口的 viewcontroller,并将弹出窗口的视图 viewcontroller 添加到所述容器。

现在您应该按特定顺序执行三件事,即:

1) 使用弹出框 viewcontroller.

在包含 viewcontroller 上调用 addChildViewController:

2) 在容器视图上调用 addSubview: 并添加弹出框 viewcontroller 视图。

3) 在包含 viewcontroller.

的弹出窗口 viewcontroller 上调用 didMoveToParentViewController:

同样,删除 viewcontroller 时执行以下操作:

1) 使用 nil 在弹出窗口 viewcontroller 上调用 willMoveToParentViewController: 以删除父连接。

2) 在弹出窗口 viewcontroller 视图上调用 removeFromSuperview

3) 最后在弹出窗口 viewcontroller 上调用 removeFromParentViewController

详情见this answer