NavigationLink init(_:destination:) 已弃用

Posted

技术标签:

【中文标题】NavigationLink init(_:destination:) 已弃用【英文标题】:NavigationLink init(_:destination:) deprecated 【发布时间】: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: () -&gt; Destination 初始化程序。我能以某种方式拥有一个过时的 SwiftUI 版本吗?虽然我不知道这怎么可能,因为所有这些初始化程序都来自 iOS 13。 使用 Xcode 13 编译良好。 【参考方案1】:

从 Xcode 12.5.1 (12E507) 更新到 13.2.1 (13C100) 修复了这个问题。

Xcode 12 中的 SwiftUI 源代码不包含以目标参数作为闭包类型的 NavigationLink 初始化程序; Xcode 13 做到了。

【讨论】:

以上是关于NavigationLink init(_:destination:) 已弃用的主要内容,如果未能解决你的问题,请参考以下文章

DES加密算法

多行文本在 SwiftUI 列表内的 NavigationLink 中不起作用

python 实现 在已打开的页面操作

DES 加密算法解析

java des 加密 解密 密钥随机取得方法

PHP:OpenSSL 等价于 mcrypt:MCRYPT_3DES?