来自Segue的swift dismissViewController - macOS

时间:2017-02-18 20:12:06

标签: swift macos segue

我有一个辅助ViewController,它通过Storyboard segue以编程方式显示:

func actioncall ()
{
    performSegue(withIdentifier: "showIgnoreVC", sender: self)

}

此函数是主ViewController的一部分,通过AppDelegate的NSNotification调用,而后者又由菜单项单击触发。

但是,即使segue连接到主ViewController,以下代码也不会忽略辅助视图:

@IBAction func dismiss(_ sender: Any)
{
    print("Hello?  Gonna close?")

    self.presenting?.dismissViewController(self)
}

没有错误,在正确的关闭按钮单击时调用该函数,但辅助视图不会被忽略。我已经尝试了dismissViewController的每个变体都无济于事。

当我使用主视图上的按钮激活相同的segue时,一切都按预期工作。我只是不希望用一堆按钮弄乱主视图。

非常感谢任何想法,非常感谢。

1 个答案:

答案 0 :(得分:1)

dismissViewController仅适用于以模态方式呈现的视图控制器(使用Present Modally Segue) 如this SO question的答案中所述,您应该解除由Show Segue提供的视图控制器,如下所示:

navigationController?.popViewController(animated: true)
dismiss(animated: true, completion: nil)