gpt4 book ai didi

ios - SwiftUI 无法在 iOS 13 版本中使用 navigationBarTitle 修饰符(已弃用),但可以在 iOS 14 中使用

转载 作者:行者123 更新时间:2023-12-03 09:23:49 25 4
gpt4 key购买 nike

我将最低部署目标从 iOS 14.0 降低到 iOS 13.0。然后我得到了这个错误:
'navigationBarTitle(_:displayMode:)' is only available in iOS 14.0 or newer

'navigationBarTitle(_:displayMode:)' is only available in iOS 14.0 or newer


但是, documentation说它可以从 iOS 13.0-14.2 和以前的 SO answers 获得发布(回到 iOS 13 是最新版本时)也使用了它。

是不是因为它“已弃用”而无法使用它?但是为什么我可以在 iOS 14.0 中使用它呢?

编辑:
尝试重现后,它似乎只有在我没有 title 时才有效存储在属性中。
comparison of storing "title" inside a property or not
import SwiftUI

struct ContentView: View {
var body: some View {
Text("Hi!")
.navigationBarTitle("Title", displayMode: .inline)
}
}
struct DetailView: View {
var title: String = ""
var body: some View {
Text("Hi!")
.navigationBarTitle(title, displayMode: .inline)
}
}

最佳答案

如果你仔细看看 navigationBarTitle调用解析为,它不是您链接的方法:

func navigationBarTitle(_ title: Text, displayMode: NavigationBarItem.TitleDisplayMode) -> some View
这是:
enter image description here
func navigationBarTitle<S>(_ title: S, displayMode: NavigationBarItem.TitleDisplayMode) -> some View where S : StringProtocol
它无法解析为第一个,因为您没有传递 Text正如标题,你是吗?您声明了参数 title成为 String .
Here's第二种方法的文档。从文档中我们可以清楚地看到它从 iOS 14.0 到 14.2 可用。
使用字符串文字作为标题的原因(例如在 ContentView 中)是因为您正在调用 yet another overloadnavigationBarTitle :
func navigationBarTitle(_ titleKey: LocalizedStringKey, displayMode: NavigationBarItem.TitleDisplayMode) -> some View
LocalizedStringKey符合 ExpressibleByStringLiteral ,因此字符串文字可以传递给 LocalizedStringKey 类型的参数,但不是像 title 这样的变量.

关于ios - SwiftUI 无法在 iOS 13 版本中使用 navigationBarTitle 修饰符(已弃用),但可以在 iOS 14 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64708320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com