两种设置按钮初始状态的方法的区别

Difference between two ways of setting a button's initial state

我发现我有两种设置按钮初始 "enabled" 属性 值的方法。第一个:实用程序 -> 按钮 -> 状态配置。第二个在 ViewController.swift 内覆盖方法 viewWillAppear:

    import UIKit

    class ViewController: UIViewController {

        @IBOutlet weak var myButton: UIButton!

        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }

        // RIGHT HERE
        override func viewWillAppear(animated: Bool) {

            myButton.enabled = true
        } 
}

所以,有实际区别吗?还是说到底是一样的?

谢谢。

当您通过 Interface Builder 配置 属性 时,执行配置的任务由读取相应故事板或 NIB 文件的库执行。这是在处理接口描述文件的内容时完成的,您无需编写任何额外的代码。

当您通过重写 viewWillAppear 方法配置 属性 时,将在您的代码中执行配置。

配置完成后,无法区分两者:结果看起来一样,因为按钮处于相同状态。在两者之间做出决定的一般经验法则如下:

  • 当您以可视方式定义 UI 元素时,您应该在编辑器中设置尽可能多的属性。
  • 当您可视化地定义了一个 UI 元素,但 属性 的值在设计时是未知的(例如,因为您需要在决定是否启用一个文件之前检查一个文件按钮或不)您需要以编程方式配置 属性。
  • 当您以编程方式定义 UI 元素时,您别无选择,只能以编程方式设置属性。