SwiftUI - NavigationBarTitleDisplayMode - 根据模式动态更改标题

发布于 2025-01-16 01:25:36 字数 470 浏览 3 评论 0原文

当视图的 .navigationBarTitleDisplayMode (设置为 .automatic)从 .large 更改为 .inline 或反之亦然时,有没有办法收到通知?

类似 @Environment 对象的东西类似于取决于

@Environment(\.locale) var locale: Locale

显示模式,我想显示不同的标题。
大致如下:

@Environment(\.navigationBarTitleDisplayMode) var mode: NavigationBarTitleDisplayMode

...

.navigationBarTitle(mode == .large ? "I am the large title" : "Inline title")
.navigationBarTitleDisplayMode(.automatic)

Is there a way to get notified when the .navigationBarTitleDisplayMode (which is set to .automatic) of a view changes from .large to .inline or vice versa?

Something like an @Environment object similar to

@Environment(\.locale) var locale: Locale

Depending on the displayMode, I'd like to show a different title.
Something along the lines of:

@Environment(\.navigationBarTitleDisplayMode) var mode: NavigationBarTitleDisplayMode

...

.navigationBarTitle(mode == .large ? "I am the large title" : "Inline title")
.navigationBarTitleDisplayMode(.automatic)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

仲春光 2025-01-23 01:25:36

这可以通过创建您自己的参数来完成。

@State private var mode: NavigationBarItem.TitleDisplayMode = .large
(...)
.navigationBarTitle(mode == .large ? "I am the large title" : "Inline title")
.navigationBarTitleDisplayMode(mode)

您可以将此变量传递到环境中并拥有一个全局指示器。

This can be done by creating your own parameter.

@State private var mode: NavigationBarItem.TitleDisplayMode = .large
(...)
.navigationBarTitle(mode == .large ? "I am the large title" : "Inline title")
.navigationBarTitleDisplayMode(mode)

You can pass this var into the environment and have a global indicator.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文