应该调用menuitem动作触发segue的对象是什么?

时间:2017-05-14 16:39:01

标签: macos cocoa segue action menuitem

我有一个菜单项选择触发segue你可以在附加的图片上看到

enter image description here

NSMeniItem连接:

enter image description here

它触发的segue:

enter image description here

如何以编程方式触发segue。 它有一个标识符,没关系。 但是,我必须将什么对象称为

  
      
  • (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender;
  •   

2 个答案:

答案 0 :(得分:0)

@vadian指出我需要windowcontroller才能首先调用segue,我可以像这样得到它

let mainStoryBoard = NSStoryboard(name: "Main", bundle: nil) 
windowController = mainStoryBoard.instantiateController(withIdentifier: "Preferences") as! NSWindowController
windowController.showWindow(self)

,其中 windowController是AppDelegate中的一个属性 “首选项”是故事板中的标识符

它有利于获取对窗口控制器本身的引用

因为我不需要参考目前只想触发segue我留下了以下解决方案

[NSApp sendAction:mPreferencesMenuItem.action to:mPreferencesMenuItem.target from:mPreferencesMenuItem];

其中mPreferencesMenuItem是触发segue的菜单项

答案 1 :(得分:0)

NSViewControllerNSWindowController符合NSSeguePerforming协议。因此,在您的控制器子类中,您可以调用[self performSegueWithIdentifier:(NSString *)identifier sender:(id)sender];