我的情况很简单:
我创建了一个新文件(选项卡式应用程序),然后我默认获得了Tab Bar控制器和第一个和第二个视图控制器(VC1和VC2)。
我在名为'totalCash'VC1和VC2的标签上放置了一个标签。在VC1中,我做了一个简单的等式。说X = y-z。做totalCash.text并在VC1中更新我的标签,一切都很棒!
现在我想学习:
当我在VC1中更新我的标签时,我该怎么做呢?当我点击模拟器中的第二个标签时,VC2中的标签也会更新该值,反之亦然。因此,如果我在VC2中购买更多项目并且我的totalCash发生故障,那么当我点击标签然后返回时,它会在VC1的标签中更新?
答案 0 :(得分:0)
这取决于您设置的数据。如果每个VC管理自己的数据,并且您需要的是更新其他选项卡中的数据,则使用NSNotificationCenter发送任何更新的通知。
如果所有VC共享数据,您可以继承UITabBarController并在那里添加变量。然后每个VC都可以调用self.tabBarController.myVariableName。使用KVO监控更新。就像Jonny在评论中所说的那样
如果数据在整个应用中共享,您可以使用单例共享公共数据。 (单身人士难以管理,难以追踪变化)
swift的单例模式
class Singleton {
var sharedString = "shared string"
var sharedInt = 54
class var sharedInstance: Singleton {
struct Static {
static var instance: Singleton?
static var token: dispatch_once_t = 0
}
dispatch_once(&Static.token) {
Static.instance = Singleton()
}
return Static.instance!
}
}
调用Singleton.sharedInstance以获取共享对象。
您可以设置或获取共享变量,如
let shared = Singleton.sharedInstance
let sharedString = shared.sharedString
shared.sharedString = "hello world"