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