将对IBOutlet和IBAction的引用放置在viewDidLoad内或之前?

问题描述 投票:0回答:1

我知道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.

    }
ios swift xcode viewdidload
1个回答
0
投票

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"
    }

}

0
投票

首先,将视图代码放入视图控制器是一种代码味道。在我看来,大多数人在视图控制器中设置他们的视图是错误的。

正确的方法是创建一个UIView子类并在其中进行视图设置。

关于您的问题。 IBActionIBOutlet是一种允许使用XML情节提要和Xib的技巧。代码和情节提要之间的连接在情节提要的XML中。在编译过程中,情节提要被编译为存档。在运行时,归档文件已取消归档,IBOutlet已连接到代码。设置在XML中。

顺便说一下,这是我不喜欢Storyboard和Xibs的原因之一。大多数设置被隐藏起来,感觉就像魔术。了解如何在代码中设置视图,您将更好地理解它们的工作原理。

© www.soinside.com 2019 - 2024. All rights reserved.