【问题标题】:Updating the background colour of UITableView section header更新 UITableView 部分标题的背景颜色
【发布时间】:2023-03-04 03:13:01
【问题描述】:

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

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

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

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

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

我使用 Swift 4.1

谢谢

【问题讨论】:

  • 听起来好像您可能正在设置部分标题视图的backgroundColor。那是错的。给节标题一个backgroundView 并设置那个视图的backgroundColor

标签: ios swift uitableview background-color uitableviewsectionheader


【解决方案1】:

您的任务的正确解决方案是使用通知。当用户更新设置时,使用NotificationCenter 发布通知,例如“配色方案已更改”。

然后,任何需要在发布此通知时执行操作的类都可以注册以接收此特定通知。

您可以让这个视图控制器监听通知并根据需要重新加载表格视图。任何其他也需要根据通知进行自我更新的视图、控件或控制器也可以注册并根据需要进行自我更新。

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

【讨论】:

  • 谢谢!我发现了问题!我将选定的颜色保存到 userdefaults 中,但我的代码正在更新 viewDidLoad() 中的相关值,它只运行一次。一旦我将更新所选颜色的代码 sn-p 移动到 viewWillAppear() 中,一切正常。我喜欢NotificationCentre 方法,这听起来像是一种更敏捷的做事方式。谢谢
猜你喜欢
  • 2013-01-03
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 2010-10-23
  • 2011-08-30
  • 2012-09-10
  • 2011-03-18
  • 1970-01-01
相关资源
最近更新 更多