如何更改 SwiftUI 中选定列表项的文本颜色?

问题描述

如何在 SwiftUI 中更改所选列表项的文本颜色?我可以动态执行此操作,以便 if 始终与所选行的背景颜色形成对比色吗?

Poor contrast

password_saved = {}

...

password = str(input("What is your password that you want to save?"))
url = str(input("Which is the site that you want your password to save to?"))
password_saved[url] = password
with open('password_saved','wb') as password_saved_file:
    pickle.dump(password_saved,password_saved_file)
print(password_saved)

解决方法

可能有变体,但一般来说,您必须以某种方式将选择与行文本一起传递到视图中,并有条件地应用前景色,例如

     NavigationLink(
         destination: ItemDetail(item: item)
     ) {
         ItemRow(item: item,selected: item == selectedItem)
     }

并在ItemRow

    Text(item.title)
        .foregroundColor(selected ? .blue : .labelColor)

注意:您可以使用浅色/深色模式变体设置在颜色资产中创建的自定义颜色,而不是 .blue,因此选择在这些模式中具有不同的颜色。