我知道viewDidLoad
应该放置与按钮,颜色和其他与视图相关的代码有关的任何设置代码。但是,在我刚刚看到的代码示例中,对IBOutlet和IBAction的引用不是写在viewDidLoad内部,而是在此方法之前,如下所示。这些不是像创建标签和操纵标签的方法那样设置的相关代码吗?
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var nameLabel: UILabel!
@IBAction func showName(sender: AnyObject) {
nameLabel.text = "my name is Cyril"
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
ViewDidLoad只是设置的一种方法。您可以在此处放置一些代码,局部变量,ets。 @IBOutlet和@IBAction是Interface Builder和nameLabel的链接。而且此出口和操作假定是全局的,因此您可以在其他函数中使用它们,而不仅仅是在viewDidLoad中使用。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var nameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
nameLabel.text = "my name is Cyril"
}
}
首先,将视图代码放入视图控制器是一种代码味道。在我看来,大多数人在视图控制器中设置他们的视图是错误的。
正确的方法是创建一个UIView
子类并在其中进行视图设置。
关于您的问题。 IBAction
和IBOutlet
是一种允许使用XML情节提要和Xib的技巧。代码和情节提要之间的连接在情节提要的XML中。在编译过程中,情节提要被编译为存档。在运行时,归档文件已取消归档,IBOutlet
已连接到代码。设置在XML中。
顺便说一下,这是我不喜欢Storyboard和Xibs的原因之一。大多数设置被隐藏起来,感觉就像魔术。了解如何在代码中设置视图,您将更好地理解它们的工作原理。