启动第二个视图控制器后如何关闭父视图控制器?
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.) 为什么需要解散父ViewController
? 2.) 到目前为止,您尝试过什么?你的代码是什么样的?
我需要关闭父视图控制器,因为它在第二个控制器启动后不起作用 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()
。
【讨论】:
以上是关于启动第二个视图控制器后如何关闭父视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章