Swift 来自另一个类的访问变量
我试图用最新版本的Swift为我在Xcode中创建的应用程序创建不同的主题。所以基本上我想让它工作的方式是Swift 来自另一个类的访问变量,swift,file,variables,Swift,File,Variables,我试图用最新版本的Swift为我在Xcode中创建的应用程序创建不同的主题。所以基本上我想让它工作的方式是 在用户在一个特殊的“主题”页面中按下一个主题后,将有一个变量(我们称之为变量“主题”)发生变化 根据变量的值,其他页面将更改其颜色、样式等 我之所以问这个问题是因为我不确定其他视图控制器如何访问变量“theme”及其当前值。每个视图控制器类位于单独的文件中 我读了一些类似问题的其他答案,但它们似乎不起作用。任何帮助都将不胜感激与您分享 选项1单身人士 class Service { s
class Service {
static let shared = Service()
var theme:Theme = .black
}
选项2全局风险值
var theme:Theme = .black
及
关于刷新,每个vc都应该配置为在最坏的情况下使用此变量,在
视图中出现有很多解决方案:
- 一个单例类,然后调用所有
视图控制器
- 如果您有视图控制器的工厂,您可以使用依赖项注入来传递它(这是一个先进的概念)
- 将主题存储在AppDelegate中。AppDelegate是一个单例,您可以从任何地方获得它的引用
- 将主题作为字典存储在NSUserDefaults中,然后在视图控制器中读取
另一件事是如何刷新已在导航控制器上推送的当前视图/视图控制器。Inside ViewDidDisplay是第一种方法,但在某些情况下,您需要使用通知中心向视图控制器/视图的所有活动实例发送通知以进行刷新。这里有一个很好的例子,它使用了一个协议
最好的选择是用户默认值,因为如果应用程序被终止或崩溃,上述选项将丢失存储的数据。
enum Theme { case black,white }