我正在尝试从不同的swift文件和类中更改一些IBOutlet的属性。例如:在类B中运行函数(类型UIView)来改变类A中的IBOutlet的alpha(类型为UIViewController)。我已经尝试了许多不同的方式来访问它们(扩展,超类)但我仍然得到这些出口的零值。我知道这是因为视图已分配但未加载,但我找不到一种方法来正确存储和访问类“A”的出口以避免这种情况。这是我的“B”类代码:
let mainView = MainViewController() //Code in B
var changeAlpha = mainView.changeText() //Code in B
func changeAlpha() { //Code in class MainViewController
self.hotLabel.alpha = 0
}
提前致谢!
答案 0 :(得分:3)
请勿尝试再次分配MainViewController
。
尝试改为访问现有的MainViewController
。
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.nextResponder()
if let mainView = parentResponder as? MainViewController {
var changeAlpha = mainView.changeText()
}
}
当您尝试创建MainViewController
类的对象(已包含您的数据)时,之前存储的值将无法访问,因为这两个类对象的引用将不同
您必须将现有的MainViewController
类传递到B类或尝试访问现有的MainViewController
或实现消息传递概念。
解决这类问题的唯一方法是在编写代码之前尝试研究OOPS的基本概念(特别是对象生命周期,分配等)。