我是iOS开发的新手,不知道iOS如何将UI对象连接到底层视图控制器对象。在Android中,UI元素在设计器中有一个id设置并在视图中使用,但我在Xcode中只看到以下内容(在ViewController.swift中似乎没有连接到特定的UI元素):
@IBOutlet weak var statusLabel: UILabel!
在Android中,我在OnCreate()
中执行以下操作statusLabel = (TextView)findViewById(R.id.statusLabel);
答案 0 :(得分:3)
答案 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时,系统会连接插座和操作链接。