如何让一个 UIViewController 继承另一个 UIViewController IBOutlets?
How to let a UIViewController to inherits another UIViewController IBOutlets?
实施以下(Class 继承)后:
class UIViewControllerA: UIViewControllerB {
}
如何让UIViewControllerA
继承UIViewControllerB
IBOutlets?如何将 Storyboard 中的组件连接到子类 UIViewControllerA
?
如果你的目标是让IBOutlets被继承,你应该这样做:
1-在Super中添加IBOutlets Class:
超级class(UIViewController)不应该直接连接到故事板中的任何ViewController,它应该是通用的。将 IBOutlets 添加到 super class 时,它们不应连接到任何组件,sub classes 应该这样做。此外,您可能想为超级 class.
中的 IBOutlets 做一些工作(这就是您应该应用此机制的原因)
超级Class应该类似于:
class SuperViewController: UIViewController, UITableViewDataSource {
//MARK:- IBOutlets
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// setting text to the label
label.text = "Hello"
// conforming to table view data source
tableView.dataSource = self
}
// handling the data source for the tableView
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
cell?.textLabel?.text = "Hello!"
return cell!
}
}
2- 继承 Super Class 并连接 IBOutlets:
简单地说,您的子 class 应该类似于:
class ViewController: SuperViewController {
override func viewDidLoad() {
// calling the super class version
super.viewDidLoad()
}
}
从故事板中,将视图控制器分配给 ViewController
(Sub Class),然后重建项目 (cmd + b ).
现在,在选择所需的视图控制器并选择 "Connection Inspector" 后,您应该会看到 - 在 IBOutlets 部分 -:
您可以手动将它们连接到您的子 class ViewController 中存在的 UI 组件(从空心圆圈拖动到组件)。它们应该看起来像:
就是这样!您的子 class 的 table 视图和标签应该继承超级 class.
中包含的内容
希望对您有所帮助。
实施以下(Class 继承)后:
class UIViewControllerA: UIViewControllerB {
}
如何让UIViewControllerA
继承UIViewControllerB
IBOutlets?如何将 Storyboard 中的组件连接到子类 UIViewControllerA
?
如果你的目标是让IBOutlets被继承,你应该这样做:
1-在Super中添加IBOutlets Class:
超级class(UIViewController)不应该直接连接到故事板中的任何ViewController,它应该是通用的。将 IBOutlets 添加到 super class 时,它们不应连接到任何组件,sub classes 应该这样做。此外,您可能想为超级 class.
中的 IBOutlets 做一些工作(这就是您应该应用此机制的原因)超级Class应该类似于:
class SuperViewController: UIViewController, UITableViewDataSource {
//MARK:- IBOutlets
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// setting text to the label
label.text = "Hello"
// conforming to table view data source
tableView.dataSource = self
}
// handling the data source for the tableView
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
cell?.textLabel?.text = "Hello!"
return cell!
}
}
2- 继承 Super Class 并连接 IBOutlets:
简单地说,您的子 class 应该类似于:
class ViewController: SuperViewController {
override func viewDidLoad() {
// calling the super class version
super.viewDidLoad()
}
}
从故事板中,将视图控制器分配给 ViewController
(Sub Class),然后重建项目 (cmd + b ).
现在,在选择所需的视图控制器并选择 "Connection Inspector" 后,您应该会看到 - 在 IBOutlets 部分 -:
您可以手动将它们连接到您的子 class ViewController 中存在的 UI 组件(从空心圆圈拖动到组件)。它们应该看起来像:
就是这样!您的子 class 的 table 视图和标签应该继承超级 class.
中包含的内容希望对您有所帮助。