【问题标题】:How can I load into a different view in a popover?如何在弹出窗口中加载到不同的视图?
【发布时间】:2016-11-07 14:55:35
【问题描述】:

我有一些代码可以打开一个显示一些文本的弹出窗口。这是通过动作转场而不是情节提要中的实际代码来完成的。有什么方法可以通过按下弹出视图上的按钮将其加载到不同的视图中并将其加载到下一个视图中?我试过使用另一个动作segue,但它会在我按下的按钮上将一个弹出窗口放入我当前的弹出窗口中。谢谢!

【问题讨论】:

  • “加载到下一个视图”是什么意思?我在想象你想要完成的事情时遇到了一些麻烦。您能否更具体一点或展示某种图形来解释您的意思?
  • @Bob 我是说,更改弹出窗口中显示的视图。例如,我有我的当前视图,按下按钮后它会关闭(或隐藏)当前视图并显示 newView 代替前一个视图所在的位置。所以本质上,按下一个按钮并显示我分配给它的完全不同的视图。
  • 明白了。感谢您的澄清。

标签: swift macos nsviewcontroller


【解决方案1】:

这种事情不能只用故事板来完成;需要一些代码。
我将这样做:与其尝试使用两个单独的弹出框,不如使用一个带有“嵌套”设置的弹出框。弹出框的内容视图控制器将包含一个Page1ViewController 和一个Page2ViewController。首次显示时,主控制器将安装第 1 页的视图。您可以将第 1 页按钮的操作直接连接到主控制器,但我建议您为此使用委托。创建一个类似于Page1ViewControllerDelegate 的协议并在主控制器中采用该协议,然后在page1ControllerRequestTransition(_:) 或您选择的任何委托方法中,只需将页面1 视图取出并交换页面2 视图。您甚至可以让两个视图大小不同;弹出框会自动调整。

哦,别忘了禁用translatesAutoresizingMaskIntoConstraints 并添加适当的约束来修复每个页面视图的四个侧面。

【讨论】:

  • 谢谢,我稍后试试!
  • 祝你好运。如果您需要更多帮助,请告诉我。
  • 有什么方法可以为我提供一个“示例”项目吗?我一直在真正理解你所说的每一个的意思时遇到问题。谢谢! @鲍勃
  • 看看这个公共领域的例子:NestedPopoverViewControllers
  • 对样本有任何疑问吗?
猜你喜欢
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多