作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有多个界面 Controller ,它们都以基于分页的格式同时打开。我需要在这些接口(interface) Controller 之间共享信息。
对于我的用例,我无法强制用户使用其他界面 Controller 之一(通过启动 segue),因此这些解决方案对我不起作用。我需要能够在任一 Controller 中更改一些变量,并在任一 Controller 中访问这些变量。
我试过直接在界面 Controller 中设置一个当前不可见的变量:
InterfaceController2().variable = false
但是,这并没有起作用(如预期的那样),因为它没有访问该接口(interface) Controller 的当前实例化实例。
我正在考虑某种全局变量情况,或者将首选项存储在 UserDefaults 中,但我觉得必须有更好的方法。
最佳答案
您可以使用单例。创建单例的最简单方法是将要在 InterfaceControllers
之间共享的变量设为类/静态属性。
你可以这样创建它:
class CommonClass {
static var mySingleton = true
}
然后像这样从您的 InterfaceController
访问它:CommonClass.mySingleton = false
。
使用单例时应谨慎,因为它们可以从您的代码的任何位置访问,因此它们可能被滥用为充当全局变量,这可能有其缺陷。
查看 this有关单例的更多详细信息的文章。
关于swift - 如何在 watchOS 上基于分页的界面中的多个界面 Controller 之间共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45339394/
我是一名优秀的程序员,十分优秀!