启动第二个视图控制器后如何关闭父视图控制器?

Posted

技术标签:

【中文标题】启动第二个视图控制器后如何关闭父视图控制器?【英文标题】:How can I dismiss the parent view controller after the second view controller is launched? 【发布时间】:2016-06-29 19:58:12 【问题描述】:

我正在快速开发一个 OSX 应用程序,它以编程方式单击按钮以启动视图控制器。我想以编程方式关闭初始视图控制器。

class ViewController: NSViewController 

    @IBOutlet weak var button: NSButton!
    override func viewDidLoad() 
        super.viewDidLoad()
        button.performClick(nil)


        self.dismissViewController(self)
        // Do any additional setup after loading the view.
    

    override var representedObject: AnyObject? 
        didSet 
        // Update the view, if already loaded.
        
    

【问题讨论】:

1.) 为什么需要解散父 ViewController2.) 到目前为止,您尝试过什么?你的代码是什么样的? 我需要关闭父视图控制器,因为它在第二个控制器启动后不起作用 2) 我尝试了 self.dismisscontroller(self) 和不同的组合。 我认为您不需要以编程方式单击按钮来移动到新的ViewController。无需使用按钮即可迁移到新的 VC。另外,我敢肯定,如果你要换一个新的 VC,你不需要解雇 VC。 它们都是应用程序要求的一部分,所以如果你知道这个问题的答案,如果你能分享答案,我将不胜感激。 在移动到新视图控制器时,您不会关闭视图控制器。这是多余的。 【参考方案1】:

只是为了升级之前的答案

self.view.window?.close() 在 swift 4 中不起作用,你可能想试试下面的代码。

self.view.window?.rootViewController?.dismiss(animated: false, completion: nil)

【讨论】:

【参考方案2】:

看起来您的按钮实际上并未执行dismissViewController()。您实际上是在 viewDidLoad() 中调用此方法。还值得一提的是,您可能想改用self.view.window?.close()

【讨论】:

以上是关于启动第二个视图控制器后如何关闭父视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何从弹出视图中关闭第二个视图控制器

在 iOS 上关闭视图控制器后如何继续播放音频?

在启动时加载并呈现第二个视图控制器

如何在解除第二个控制器后调用第一个控制器中的函数

关闭 Popover 后更新第一个视图

以编程方式从模态视图控制器切换父选项卡