【问题标题】:Swift: set @IBOutlet static斯威夫特:设置@IBOutlet 静态
【发布时间】:2018-07-23 05:45:20
【问题描述】:

我想从另一个类更改 @IBOutlet 文本值

如何将@IBOutlet 设置为静态?

下面的代码不起作用:

@IBOutlet internal static var boxGender: UIView!

【问题讨论】:

  • 这里可能是XY问题;为什么要将出口声明为静态?背后的原因是什么?
  • 如果您只想更改另一个类的值,请使用任何:委托、通知或回调。

标签: swift static iboutlet


【解决方案1】:

您可以设置控制器的静态值并从中获取所有值。但这不是到达您的网点的正确方式。您应该将控制器传递给其他类实例。

class Test: UIViewController {
    var boxGender: UIView!
    static var instance: Test?

    override func viewDidLoad() {
        super.viewDidLoad()
        Test.instance = self
    }
}
Test.instance?.boxGender

【讨论】:

    【解决方案2】:

    IBOutlet 不能是静态的。 (编译器会报错Only instance properties can be declared @IBOutlet

     class SomeViewWithALabel: UIView {        
            @IBOutlet weak var myLabel: UILabel!    
            // ... methods and properties                
     }
    
    
     class MyController: UIViewController {        
            @IBOutlet weak var someViewWithALabel: SomeViewWithALabel!    
    
            //...
    
            override func viewWillAppear(_ animated: Bool) {
                 super.viewWillAppear(animated)
                 someViewWithALabel?.myLabel.text == "Custom text"
            }   
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-22
      • 2017-03-24
      • 1970-01-01
      • 2016-02-08
      • 2017-11-13
      • 2015-08-19
      • 2014-09-11
      • 1970-01-01
      相关资源
      最近更新 更多