如何从一个控制器访问变量到另一个控制器
How to access variables from one controller to another controller
大家好,我正在使用 swift 2.2 开发一个应用程序,我在第一个视图控制器中声明了一个变量,我想在第二个视图中访问它 controller.i 已经搜索了其他堆栈溢出答案,没有任何支持我的东西。
在我的第一个视图控制器中:
class firstViewController: UIViewController{
var timer:nstimer?
//performed some functions using nstimer
}
现在我想停止计时器并在第二个视图控制器中保留按钮操作所以我想访问变量 timer.how 来访问??
我在要求使用 prepare for segue 的堆栈溢出答案之前进行了搜索,但我已经获得了一些连接并执行了与其他控制器的 segue。
现在正在寻找访问 variables.can 任何人帮助我解决这个问题的解决方案??
提前致谢。
在FirstController
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "segueidentifier" {
if let destVc = segue.destinationViewController as? SecondViewController {
destVc.timer = self.timer
}
}
}
在SecondViewController
中创建一个计时器属性并使用它。
var timer: NSTimer?
如果您遇到连接问题。试试这个
通过 ctrl + 拖动在 FirstViewController 和 SecondViewController 之间创建 segue 并连接到第二个并为 segue 标识符命名
你的第二个 ViewController 不应该知道第一个视图控制器的任何信息,如果它知道那么你基本上将两个 VC 联系在一起。
您需要做的是通过上面建议的@Sahil 传递引用(尽管我会避免这样做,因为第一个 VC 可能不会期望来自外部源的更改),或者使用委托模式。
使用委托模式,您可以为第二个 VC 提供对第一个 VC 的弱引用,并使第一个 VC 符合第二个 VC 定义的协议].委托模式已经解释了很多次,所以我只给你一个 link 而不是在这里再次解释它:http://useyourloaf.com/blog/quick-guide-to-swift-delegates/
委托模式是最安全的选择,它允许第一个 VC 以预期的方式控制计时器,而不是从外部修改它,所以我建议探索该选项而不是将引用传递给定时器通过。
大家好,我正在使用 swift 2.2 开发一个应用程序,我在第一个视图控制器中声明了一个变量,我想在第二个视图中访问它 controller.i 已经搜索了其他堆栈溢出答案,没有任何支持我的东西。
在我的第一个视图控制器中:
class firstViewController: UIViewController{
var timer:nstimer?
//performed some functions using nstimer
}
现在我想停止计时器并在第二个视图控制器中保留按钮操作所以我想访问变量 timer.how 来访问??
我在要求使用 prepare for segue 的堆栈溢出答案之前进行了搜索,但我已经获得了一些连接并执行了与其他控制器的 segue。
现在正在寻找访问 variables.can 任何人帮助我解决这个问题的解决方案??
提前致谢。
在FirstController
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "segueidentifier" {
if let destVc = segue.destinationViewController as? SecondViewController {
destVc.timer = self.timer
}
}
}
在SecondViewController
中创建一个计时器属性并使用它。
var timer: NSTimer?
如果您遇到连接问题。试试这个
通过 ctrl + 拖动在 FirstViewController 和 SecondViewController 之间创建 segue 并连接到第二个并为 segue 标识符命名
你的第二个 ViewController 不应该知道第一个视图控制器的任何信息,如果它知道那么你基本上将两个 VC 联系在一起。
您需要做的是通过上面建议的@Sahil 传递引用(尽管我会避免这样做,因为第一个 VC 可能不会期望来自外部源的更改),或者使用委托模式。
使用委托模式,您可以为第二个 VC 提供对第一个 VC 的弱引用,并使第一个 VC 符合第二个 VC 定义的协议].委托模式已经解释了很多次,所以我只给你一个 link 而不是在这里再次解释它:http://useyourloaf.com/blog/quick-guide-to-swift-delegates/
委托模式是最安全的选择,它允许第一个 VC 以预期的方式控制计时器,而不是从外部修改它,所以我建议探索该选项而不是将引用传递给定时器通过。