假设我在一个类ViewController
中定义变量,并希望从另一个类中访问该变量,比如BLEHandler
。我该怎么做呢?我遇到了NSUserDefaults
的问题,所以除此之外的方法将非常感激。
答案 0 :(得分:6)
有些方法可以在viewControllers之间传递值 例如
在不同的情况下使用不同的方式。
如果你使用prepareFoSegue - 当你想在执行segue时传递时使用
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
//Use below to get reference,so that you can pass value
//segue.destinationViewController
//segue.sourceViewController
}
如果你使用notificationcenter - 盲目通知,一个vc发送消息,可能不止一个接收。 在发送消息vc
NSNotificationCenter.defaultCenter().postNotificationName(, object: )
在接收消息vc中 先注册
NSNotificationCenter.defaultCenter().addObserver(, selector: , name: , object: )
比从选择器
获取值不要忘记删除
NSNotificationCenter.defaultCenter().removeObserver(, name: , object: )
如果您使用委托 - 接收者和发件人首先拥有连接。 有可能发布这个,我不会发布示例。
如果你使用单身 - 你必须清楚单身的生命周期。我不建议以这种方式传递价值。
答案 1 :(得分:3)
别担心
var firstmyvar = "Any"
let secondview = self.storyboard?.instantiateViewControllerWithIdentifier("secondview") as SecondViewController
secondview.myvar = firstmyvar
self.presentViewController(secondview, animated: false, completion: nil)
答案 2 :(得分:-4)
一种方法是在app delegate中创建变量。它的全局视图控制器。
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let aVariable = appDelegate.someVariable