iOS SwiftUI 在与代码交互时如何调出“嵌入 VStack”之类的额外操作?

Posted

技术标签:

【中文标题】iOS SwiftUI 在与代码交互时如何调出“嵌入 VStack”之类的额外操作?【英文标题】:iOS SwiftUI how to bring up extra actions like "Embed in VStack" when interacting with code? 【发布时间】:2020-01-01 12:33:28 【问题描述】:

我正在查看 this SwiftUI tutorial,它表明我可以在命令单击 代码中 的 SwiftUI 元素时看到额外的操作。在我的 Xcode 中,这会跳转到类定义。

我看到 XCode 11.0 中有一个选项 t 更改 Option 键以显示 SwiftUI 检查器,但是,这仍然不允许我使用“嵌入 VStack”之类的操作修改 SwiftUI 代码元素

在与 SwiftUI 代码(不是预览版)交互时,如何同时获得检查器和额外的 SwiftUI 操作?

【问题讨论】:

Canvas必须打开,详情请看here。 【参考方案1】:

额外的 SwiftUI 操作在 Canvas 打开时显示(快捷键:Option-Command-Enter 或 ⌥+⌘+↵):

画布已关闭

画布已打开

【讨论】:

即使我的画布正在显示,它仍然没有显示给我。 @ScottyBlades 你使用什么 Xcode 版本?您是否尝试过重新启动它? 版本 12.4 (12D4e),是的,我尝试重新启动它。它只是间歇/随机显示。【参考方案2】:

接受的答案在macOS 10.15.5Xcode 11.4.1 上对我不起作用。

好消息是您可以通过SwiftUI 元素上的[Command][Shift][Left Click] 快捷方式或单击右键菜单上的Show Code Actions 来获取它。

【讨论】:

这对我很有帮助,因为我遇到了同样的问题。然后,我发现如果我转到 Xcode -> Preferences -> Navigate 并将命令单击行为更改为 Selects Code Structure,我也可以使用 command+click 到达那里。【参考方案3】:

您可以在 Xcode -> Preferences, Navigate 选项卡下更改命令单击行为。

相当不直观,如果您选择“选择代码结构”,那么command+click 将显示您正在寻找的 SwiftUI 菜单选项(假设画布已打开)。

如果你这样做,你仍然可以通过control+command+click 跳转到定义

相反,如果您希望继续使用 command+click 跳转到定义,则可以改为使用 control+command+click 来调出 SwiftUI 菜单选项。

【讨论】:

不错的发现!我希望 SwiftUI 少于我想要跳转到定义,否则这对我来说也是赢家。【参考方案4】:

我建议不要使用鼠标,而是使用 Xcode 热键来调出代码操作。导航到 Preferences -> Key Bindings 并搜索 Show Code Actions。您将看到预设的热键,然后您可以对其进行自定义。我的默认键绑定是Shift+Command+A。当您按下热键时,请确保您的光标位于预期的元素上。

【讨论】:

【参考方案5】:

如果您的偏好与 Xcode 预期的不同,则在 Xcode 12.2 和 12.3(在 MacOS 10.15.5 下)中单击视图的命令将不起作用。

您必须将Command-click on Code:Navigation 首选项更改为Selects Code Structure,然后当您命令单击View 时才会出现正确的菜单。

改变这一点。按 command , 打开您的首选项并选择 Navigation 按钮。您需要更改的选项在第一个弹出菜单中。

【讨论】:

以上是关于iOS SwiftUI 在与代码交互时如何调出“嵌入 VStack”之类的额外操作?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI Button 与 Map 交互

当玩家在与 NPC 交互时选择特定的对话选项时,我如何执行某些操作?

SwiftUI 中的 WKWebView - 用户与网站交互时如何切换视图?

单击搜索栏时如何显示单独的视图? [SwiftUI] [关闭]

在与 Xcode 互连的 SQL 中存储和与用户敏感数据交互

ios应用程序在后台使用SwiftUI时如何播放SystemSound