Ios 在选项卡式视图控制器之间以Swift方式传递简单变量数据(更新标签)
我的情况很简单: 我创建一个新的文件选项卡式应用程序,然后默认情况下分别获得选项卡栏控制器和第一视图控制器VC1和第二视图控制器VC2 我在“totalCash”VC1和VC2上都贴了一个标签。在VC1中,我做了一个简单的等式。假设X=y-z。在VC1中执行totalCash.text并更新我的标签,一切都很好 现在我想学习:Ios 在选项卡式视图控制器之间以Swift方式传递简单变量数据(更新标签),ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我的情况很简单: 我创建一个新的文件选项卡式应用程序,然后默认情况下分别获得选项卡栏控制器和第一视图控制器VC1和第二视图控制器VC2 我在“totalCash”VC1和VC2上都贴了一个标签。在VC1中,我做了一个简单的等式。假设X=y-z。在VC1中执行totalCash.text并更新我的标签,一切都很好 现在我想学习: 当我在VC1中更新我的标签时,我如何使其在单击模拟器中的第二个选项卡时,VC2中的标签也用该值更新,反之亦然。因此,如果我在VC2中“购买更多物品”,并且我的总现金下降,
当我在VC1中更新我的标签时,我如何使其在单击模拟器中的第二个选项卡时,VC2中的标签也用该值更新,反之亦然。因此,如果我在VC2中“购买更多物品”,并且我的总现金下降,当我单击选项卡并返回时,它会在VC1的标签中更新?这取决于您设置的数据。如果每个VC都管理自己的数据,而您只需要更新“其他”选项卡中的数据,则使用NSNotificationCenter发送任何更新的通知 如果所有VC共享数据,则可以将UITabBarController子类化,并在其中添加一个变量。然后每个VC都可以调用self.tabBarController.myVariableName。使用KVO监视更新。就像Jonny在评论中说的 如果数据在整个应用程序中共享,则可以使用singleton共享公共数据。单身人士很难管理,也很难跟踪变化 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"
创建一个超出viewcontroller范围的变量,即全局变量,然后在两个视图控制器中访问其值好的,非常感谢!所以我对斯威夫特还是个新手,刚上完课程的第三周。如何创建每个VC都可以访问的全局变量?基本上,数据在所有选项卡之间共享,但每个VC都有自己的功能。例如,VC 1,概述你总共有多少钱,VC 2商店,它显示你有多少钱,但允许你购买物品,并从总现金中减去这些物品的成本,这将反映在VC1和VC2最后一个问题中,因此我可以在两个选项卡中为我的标签显示变量sharedInt或sharedString,这很好!但是,如果我在VC2中更新sharedInt,那么如何使该更新也在VC1中发生呢?基本上,我能够更新Singleton fileKVO中的变量,请参见示例