2017-02-18 109 views
2

我有经由故事板赛格瑞编程出现一个二次的ViewController:夫特dismissViewController从Segue公司 - MACOS

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

} 

此功能是主视图控制器的一部分,并且经由NSNotification从称为AppDelegate,然后由菜单项点击触发。

然而,即使SEGUE被连接到主的ViewController,下面的代码不关闭该次视图:

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

    self.presenting?.dismissViewController(self) 
} 

没有错误,则该函数在所述正确称为辞退按钮点击,但次要视图不会消除。我试过dismissViewController的每一个变种都无济于事。

当我在主视图上使用一个按钮来激活相同的segue时,一切都按照它应有的方式工作。我只是不希望用一堆按钮来混淆主视图。

任何想法表示赞赏,非常感谢。

+0

当这条线'self.presenting?.dismissViewController(self)'执行,'self.presenting'的值是什么? –

+0

@DaveWeston,好问题。使用'let x = self.presenting!作为NSViewController',应用程序崩溃**致命错误:意外地发现零,同时解开可选值**。显然没有viewController呈现。 –

回答

1

只dismissViewController工程视图控制器,这是模态呈现(使用Present Modally Segue) 正如在回答this SO question说,你应该解雇视图控制器,通过Show Segue介绍,像这样:

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

dismissViewController适用于作为工作表呈现的视图控制器,并显示。在这个项目中,没有navigationController。无论如何感谢您的意见。 –