【问题标题】:How to change navigation bar tint color for pushed view in SwiftUI?如何在 SwiftUI 中更改推送视图的导航栏色调颜色?
【发布时间】:2022-01-18 00:11:58
【问题描述】:

[找到 1 个解决方案!] 感谢 George 的评论,我能够找到解决方案 https://stackoverflow.com/a/70353393/882987 但如果有人有任何其他解决方案,请随时写它:)

我在 SwiftUI 中为“推送”视图设置自定义导航栏色调时遇到了一些问题。

代码是这样的,有一堆项目并点击每个项目,我们会显示/推送一些细节视图:

NavigationView {
        ScrollView {
            LazyVStack(alignment: .leading) {
                ForEach(items) { item in
                    NavigationLink(destination: DetailItemView(item))) {
                        ListItemView(item)
                    }
                }
            }
        }
    }

而且我想为每个被推送的视图设置不同的导航栏色调。

有没有办法做到这一点?

【问题讨论】:

  • This 应该有帮助
  • @George 你确定吗?目标视图的主体中没有 NavigationView,它是被推送的。如果 SwiftUI View 在导航中,有什么方法可以检查它吗?
  • 哦,是的,错过了。您仍然可以使用该解决方案 - 也许您可以将您想要的颜色的 Binding 传递到目的地?然后在目标视图的init 中,你设置了那个绑定?您可以根据需要继续向下传递绑定。虽然我想知道环境对象是否可以更好地工作并且看起来更干净。
  • @George 我现在将尝试绑定,tnx
  • 太棒了,tnx @George 我使用了基本的绑定并且它有效,我会发布答案:)

标签: ios swift swiftui


【解决方案1】:

感谢 George 的 cmets,我能够使用基本的 Binding 找到解决方案。

视图A中我添加了:

@State private var navColor = Color.primary

我添加了修饰符

NavigationView {
...
}
.accentColor(navColor)

视图B中我添加了:

@Binding var navColor: Color

所以我可以在视图 B 中将 navColor 属性更改为我想要的任何内容,它会更新 accentColor(以及导航栏的色调)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2021-11-14
    • 1970-01-01
    相关资源
    最近更新 更多