我正试图从一个控制器移动到另一个控制器,但我希望根视图控制器在打开另一个视图时消失。我只看到弹出窗口,模型和工作表,但根视图控制器仍然在后台可见。例如在登录页面中,当我点击注册时,会出现注册页面,登录页面会消失,反之亦然。有没有办法在OSX中执行此操作?
答案 0 :(得分:1)
在stackoverflow中,通常的做法是显示您已经尝试过的代码,我建议您阅读:How to ask a good question
关于你的问题:
您需要从超级视图中删除要隐藏的视图。
view.removeFromSuperview()
" view"是您想要隐藏的视图。 您可以将此视图传递给要隐藏视图的函数,也可以将其保存在变量中。
如果你正在使用子视图,我假设这是因为我知道新的视图控制器会覆盖旧视图。
答案 1 :(得分:0)
在OSX中,当您参考" View Controllers"它们属于响应者链,即像Window Controllers一样。
所以基本上有几种方法可以从一个视图控制器(一个窗口?)转换到另一个视图控制器:
1)从一个" View Controller"对于另一个"窗口"中的另一个,您需要依赖:
自定义NSViewController,用于处理其子NSViewControllers的自定义转换。即手动实例化每个子ViewController,并从" main"过渡到另一个子ViewController。视图控制器(这是您正在查看的主要控件0 /。 2 a)如果你想在NSTabViewController(它确实处理简单的过渡)中使用构建的东西,但是也不推荐用于此用途。 3)唯一的选项,绝对不推荐使用单独的视图控制器)并在它们之间使用segue。这可以创建多个窗口..取决于"演示选项"你选择。
重要的是要注意......点击你的任何一个窗口,查看等等......控制器..你会看到一个"演示文稿"您可以在"单身"之间切换的选项和"多个"。
答案 2 :(得分:0)
解决问题的一种方法是以编程方式移动到新屏幕,如下所示:
将一些Storyboard ID提供给第二个viewController,例如secondView
。
将注册按钮的操作链接到第一个ViewController
,然后在操作方法中添加以下代码:
let secondView = self.storyboard!.instantiateControllerWithIdentifier("secondView") as? SignUpViewController
self.view.window?.contentViewController = secondView;