iOS如何将UI对象连接到视图控制器对象

时间:2018-04-04 19:38:45

标签: ios swift xcode user-interface

我是iOS开发的新手,不知道iOS如何将UI对象连接到底层视图控制器对象。在Android中,UI元素在设计器中有一个id设置并在视图中使用,但我在Xcode中只看到以下内容(在ViewController.swift中似乎没有连接到特定的UI元素):

@IBOutlet weak var statusLabel: UILabel!

在Android中,我在OnCreate()

中执行以下操作
statusLabel = (TextView)findViewById(R.id.statusLabel);

3 个答案:

答案 0 :(得分:3)

要在连接后更改插座的变量名称,Xcode 9.2及更高版本具有重构功能,可让您轻松重命名变量。

在变量名称上

命令+点击,然后点击重命名... Refactor feature

答案 1 :(得分:1)

UIViewController类的每个实例都有一个名为UIView的基础view属性。使用界面构建器时,可以ctrl+drag添加的视图以创建IBOutlet,该UIViewController引用已在界面构建器中修改其属性的视图。

这会创建UI元素,并将其添加为view UIViewController的子视图,并允许您直接在UIViewController&#39中的任何一个访问它; s方法,或(假设它不是私有的)let myViewControllerInstance : ViewController = UIStoryboard.init(name: "main", bundle: nil)!.instantiateViewController(withIdentifier: "ViewControllerStoryboardID") myViewControllerInstance.myStatusLabel.text = "I can change the label's properties from any instance of the View Controller" 的任何实例。

UIView

如果您需要在出现ViewController之前以编程方式修改ViewDidLoad个实例的任何属性,建议您在class ViewController : UIViewController { @IBOutlet weak var statusLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() statusLabel.text = "My Status Label" //Accessing your UI element directly } } 中执行此操作。

class ViewController : UIViewController {

    var myStatusLabel : UIView

    override func viewDidLoad() {
        super.viewDidLoad()

        statusLabel = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
        self.view.addSubview(myStatusLabel)
        statusLabel.text = "This label was created progrommatically."
    }
}

使用故事板方法的替代方法是以编程方式实例化视图,设置框架(或使用自动布局添加约束),并将其添加为子视图。

Marker

答案 2 :(得分:0)

在iOS中,您通常使用Storyboards(或有时是XIB文件)来设置用户界面。在storyboard / XIB中,您可以控制 - 从界面拖动到视图控制器的代码中以创建或连接插座链接。

storyboard / XIB是一个内部的XML文件,用于描述UI和出口链接。在加载storyboard / XIB时,系统会连接插座和操作链接。