繁体   English   中英

使根视图控制器在mac OSX swift中消失

[英]Make root view controller disappear in mac OSX swift

我试图从一个控制器移动到另一个控制器但我希望根视图控制器在打开另一个视图时消失。我只看到弹出窗口,模型和工作表但根视图控制器仍然在后台可见。例如在登录中当我点击注册页面时,会出现注册页面,登录页面会消失,反之亦然。有没有办法在OSX中执行此操作?

在stackoverflow中,通常的做法是显示您已经尝试过的代码,我建议您阅读: 如何提出一个好问题

关于你的问题:

您需要从超级视图中删除要隐藏的视图。

view.removeFromSuperview()

“视图”是您想要隐藏的视图。 您可以将此视图传递给要隐藏视图的函数,也可以将其保存在变量中。

这是如果您使用子视图,我假设这是因为据我所知,新的视图控制器将覆盖旧视图。

在OSX中,当您引用“视图控制器”时,它们会进入响应器链,例如窗口控制器。

所以基本上有几种方法可以从一个视图控制器(一个窗口?)转换到另一个视图控制器:

1)从一个“视图控制器”到同一个“窗口”中的另一个,您需要依赖:

  1. 一个自定义的NSWindowController,允许NSViewController(及其NSView)切换。 - 强烈不推荐。
  2. 一个自定义的NSViewController,它处理它的子NSViewControllers的自定义转换。 即手动实例化每个子ViewController,并从“主”视图控制器(这是你正在查看的主要视图控件0 / .2 a)从一个转换到另一个。如果你想使用NSTabViewController中构建的东西(它确实处理)容易过渡)但也不建议用于此用途。 3)唯一的选项,绝对不推荐使用单独的视图控制器)并在它们之间使用segue。 这可能会创建多个窗口..根据您选择的“演示选项”。

    • 这一点很重要,请注意......单击任何一个窗口,查看等控制器..然后您将看到一个“演示”选项,您可以在“单个”和“多个”之间切换。

      • 单一 :一旦您实例化任何窗口/视图控制器(或响应器链中的任何内容),它仍然是实例化的,并且不会多次出现多个实例
      • 多个 :你有一个窗口或视图(或其他任何东西)需要多次出现,依赖于每个实例是独立的,而不是只有一次ie(只有一个首选项窗口)...等等...

解决问题的一种方法是以编程方式移动到新屏幕,如下所示:

将一些Storyboard Id提供给第二个viewController,例如secondView

将注册按钮的操作链接到First ViewController ,然后在操作方法中添加以下代码:

let secondView = self.storyboard!.instantiateControllerWithIdentifier("secondView") as? SignUpViewController

self.view.window?.contentViewController = secondView;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM