【发布时间】:2022-02-13 00:30:35
【问题描述】:
在 macOS 12 中,Apple 通过引入命令组 ImportFromDevicesCommands 来修复 SwiftUI 中省略的“Continuity Camera”,该命令组可以简单地添加到窗口中。
但是当您尝试在支持 macOS 11 和 12 的应用中使用它时,您会错过条件支持,因为在组合 SwiftUI 视图时很常见。
我尝试了以下方法:
import SwiftUI
@main
struct ThrowAwayApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.commands {
if #available(macOS 12, *) {
ImportFromDevicesCommands()
}
}
}
}
但是编译器会弹出以下错误信息:
Closure containing control flow statement cannot be used with result builder 'CommandsBuilder'
我了解CommandsBuilder 不支持buildIf()、buildEither(first:) 和buildEither(second:),因此缺少if-block 对SwiftUI 视图的支持。
有没有办法有条件地将命令添加到WindowGroup?
我可以用@available 做一些诡计吗? (我真的很想念@unavailable...)
【问题讨论】:
标签: swiftui