【发布时间】:2022-01-20 00:07:21
【问题描述】:
NavigationLink 的初始化器
init<S>(_ title: S, destination: Destination) where S : StringProtocol
已弃用,仅适用于 iOS 13.0–15.2。替换是
init<S>(_ title: S, destination: () -> Destination) where S : StringProtocol
根据文档:https://developer.apple.com/documentation/swiftui/navigationlink/init(_:destination:)-6hslu。
将我现有的代码替换为
NavigationLink("MyTitle") {
Text("MyView")
}
显示错误
Type '() -> Text' cannot conform to 'View'
我使用推荐的初始化器有什么问题?
编辑 1: Xcode 版本 12.5.1 (12E507)
【问题讨论】:
-
该代码对我来说编译得很好。清除派生数据?重启 Xcode?span>
-
没用,很遗憾。
-
有趣。您确定这发生在干净的环境中(即尝试将其粘贴到空白 Xcode 项目中)吗?也许它受到某种周围代码的影响。
-
是的,我就是这样测试的。奇怪的是 NavigationLink 的 SwiftUI 源代码只显示了
destination: Destination的初始化程序,而没有显示destination: () -> Destination初始化程序。我能以某种方式拥有一个过时的 SwiftUI 版本吗?虽然我不知道这怎么可能,因为所有这些初始化程序都来自 iOS 13。 -
使用 Xcode 13 编译良好。
标签: ios swift swiftui swiftui-navigationlink