如何制作表格'菜单项中的segue

时间:2015-06-11 17:36:14

标签: macos swift cocoa segue

我有一个Swift Cocoa应用程序,可以从菜单项中分割视图。 当我从界面构建器创建segue时,选项是: 表演,模态和习俗。

然而,当我从按钮创建segue时,会出现更多选项: 表,popover,show,custom,modal

我需要从该菜单项创建一个表单segue。 我错过了什么吗?或者只是从菜单项

中禁用这些额外选项

4 个答案:

答案 0 :(得分:7)

正如其他人所说,菜单项不能执行依赖于任何窗口附件的segue。不幸的是,有些情况下你想要从菜单项中触发“工作表”。例如,Xcode本身就是这样做的。 Xcode窗口左下角的+将打开一个三项菜单,所有菜单都执行“工作表”segue。

一个选项是定义两个故事板场景之间的segue,给segue一个Identifier,然后以编程方式执行segue。

  1. 单击您的第一个场景,然后在场景标题中查找View Controller图标。这是一个包含白色方块的蓝色圆圈。

  2. 从该视图控制器图标控制拖动到第二个场景(您要在工作表中显示的场景)。应该在两个场景之间创建一个segue。这个segue将提供各种各样的segue种类,包括“Sheet”。

  3. 选择新的segue并显示属性检查器。给segue一个标识符,例如“ShowEditView”

  4. 手动触发segue。作为一个简单的测试,将一个按钮拖到场景一上,然后将它连接到一个视图控制器的场景:

    @IBAction func wasClicked(sender: AnyObject) {
        print("Test button was clicked.")
        self.performSegueWithIdentifier("ShowEditView", sender: self)
    }
    

答案 1 :(得分:0)

感谢您的提示。

然而我需要segue,因为它与" import"应用程序中的选项

经过一些研究后,我发现了一张"表" segue需要附加一个窗口,菜单与任何窗口无关。 这就是当我试图从按钮创建segue时出现选项的原因,因为按钮位于视图内部,也是窗口内的视图。

解决方案与Frizlab所说的相关,必须将segue附加到可以显示它的视图/窗口,然后在单击菜单时执行该segue

答案 2 :(得分:-1)

仅限故事板解决方案

  1. 在主视图中添加NSMenuItem。将其标记为“属性检查器”
  2. 将NSButton添加到此隐藏的NSStackView
  3. 控制从NSButton拖动到performClick:(从步骤2开始)
  4. 在拖动结束时,会出现一个菜单,选择NSButton。这将模拟在NSButton上单击鼠标
  5. 可以在菜单中看到从NSButton到视图的拖动控制和现在的工作表选项。
  6. 完成!!
  7. 注意:为隐藏的NSStackView添加$factory->define(App\Models\YourModel::class, function (Faker\Generator $faker) { static $combos; $combos = $combos ?: []; $faker1 = $faker->something(); while($faker2 = $faker->somethingElse() && in_array([$faker1, $faker2], $combos) {} $combos[] = [$faker1, $faker2]; return ['field1' => $faker1, 'field2' => $faker2]; }); ,以便从NSMenu显示为工作表的每个视图。

答案 3 :(得分:-2)

你没有遗漏任何东西。我解决这个问题的方法是选择一个segue选项,然后使用更改编辑器打开更改的故事板,找到为segue更改的确切位置。以XML格式打开时很容易看到。然后我手动编辑segue到" sheet"。保存故事板,一切正常。