我有UIViewController
个IBOutlets
。我还有一个UIWindow
需要访问第一个IBOutlets
中的UIViewController
个UIWindow
。但是,每当我尝试从nil
访问它时,变量都是class ViewController: UIViewController {
@IBOutlet weak var playPauseLabel: UILabel!
@IBOutlet weak var playButton: UIButton!
@IBOutlet weak var pauseButton: UIButton!
func functionA() {
println(playPauseLabel)
println(playButton)
println(pauseButton)
}
}
class WindowClass: UIWindow {
func resetPlayPause() {
var vc = ViewController()
vc.functionA()
}
}
。这是我的一些代码。
func resetPlayPause()
现在,当我从WindowClass
拨打IBOutlets
时,所有三个IBOutlets
都是零。我已经在这个问题上阅读了其他SO线程,但没有找到任何解决方案。如何从ViewController
?{/ p>访问和修改WindowClass
中的{{1}} {/ 1}}
答案 0 :(得分:0)
简单的答案是resetPlayPause()
每次调用ViewController
时都会构造一个新实例,除非你的ViewController
有一个初始化程序从故事板或xib加载自己,否则你的网点将被连接。如果您的ViewController
具有执行此操作的初始值设定项,则在加载view
之前,它不会连接其出口。您只需在切换按钮之前调用vc.view
中的resetPlayPause()
即可完成此操作。
更难的答案是让你的窗口直接访问视图控制器的ivars似乎是一个非常糟糕的主意。将resetPlayPause()
方法移动到某个地方其他而不是移动到窗口子类中,或者让它调用ViewController
上的方法,该方法将在内部切换按钮。
答案 1 :(得分:0)
答案是使用NSNotificationCenter。像魅力一样。