SwiftUI:仅更改 UITableViewAppearance 的一个实例

Posted

技术标签:

【中文标题】SwiftUI:仅更改 UITableViewAppearance 的一个实例【英文标题】:SwiftUI: Change only one instance of UITableViewAppearance 【发布时间】:2020-07-29 16:38:27 【问题描述】:

我知道组件List 后面有一个UITableView。我也知道我可以通过更改UITableView.appearance().backgroundColor 来更改背景。

我想要为具有List 组件的单个View 更改此设置,而不会影响应用程序的其余部分。这可能吗?如果有,怎么做?

谢谢!

【问题讨论】:

【参考方案1】:

这是我知道实现这一目标需要做的事情:

var body: some View 
    List 
        //Your content
    
    .onAppear 
        //The specific table view settings.
        //UITableView.appearance().separatorColor = .black
    
    .onDisappear 
        //The general table view settings
        //UITableView.appearance().separatorColor = nil
    

但这有几个原因。

最大的原因是您可能在同一个视图中有 2 个表视图,并且您希望它们具有不同的外观。

第二个问题是不是所有情况都会调用 onAppear(具体情况我不记得了,但我记得 TabViews 有问题)

希望下一版的 SwiftUI 已经有更好的解决方案在等待。

【讨论】:

以上是关于SwiftUI:仅更改 UITableViewAppearance 的一个实例的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:如何从 ViewModel 的更改中切换警报演示者

SwiftUI 中的领域:UI 中仅偶尔保存对象的实时文本

我可以在 SwiftUI 深色模式下覆盖黑色背景颜色吗?

SwiftUI 按钮作为 EditButton

致命错误:@SceneStorage 仅用于 SwiftUI 应用程序生命周期。:文件 SwiftUI,第 0 行

使用 ForEach (SwiftUI) 的偶数行和奇数行