更新 UITableView 部分的背景颜色 header

Updating the background colour of UITableView section header

在我的应用程序中,我让用户更改主主题颜色,然后 UI 元素会相应更新。我有一个导航控制器,它嵌入到选项卡栏控制器中。

该应用程序有两个选项卡,主屏幕(具有导航控制器)和设置选项卡(单个 UIViewController)。当用户从设置页面更改主题颜色并返回主屏幕(即切换标签)时,UITableView 中 header 部分的背景颜色不会更新。

我使用tableView(_ tableView: UITableView, viewForHeaderInSection section: Int)设置第header部分的背景颜色,但是,显然,当用户在选项卡之间切换时不会调用此方法。

我必须使用导航控制器(即导航到另一个视图并返回主屏幕)来更新 UITableView 部分的颜色 header。

当用户 returns 从设置选项卡返回主屏幕时,如何更新颜色?

我用Swift4.1

谢谢

您的任务的正确解决方案是使用通知。当用户更新设置时,使用 NotificationCenter 到 post 通知,例如 "color scheme changed".

然后任何 class 需要在此通知 posted 时执行操作可以注册以接收此特定通知。

您可以让此视图控制器侦听通知并根据需要重新加载 table 视图。任何其他也需要根据通知更新自身的视图、控件或控制器也可以注册并根据需要更新自身。

与依赖视图再次可见等其他事件相比,这是一个更好的解决方案。它还消除了每次查看视图控制器时不必要地重新加载 table,即使用户没有更改任何设置也是如此。