gpt4 book ai didi

swift - 如何让一个 UIViewController 继承另一个 UIViewController IBOutlets?

转载 作者:搜寻专家 更新时间:2023-10-31 22:19:39 24 4
gpt4 key购买 nike

在实现以下(类继承)之后:

class UIViewControllerA: UIViewControllerB {
}

如何让UIViewControllerA继承UIViewControllerB IBOutlets?如何将 Storyboard 中的组件连接到子类 UIViewControllerA

最佳答案

如果您的目标是让 IBOutlets 被继承,您应该执行以下操作:

1- 在父类(super class)中添加 IBOutlets:

父类(super class) (UIViewController) 不应直接连接到 Storyboard 中的任何 ViewController,它应该是通用的。将 IBOutlets 添加到父类(super class)时,它们不应连接到任何组件,子类应该这样做。此外,您可能想为父类(super class)中的 IBOutlet 做一些工作(这就是您应该应用此机制的原因)。

父类(super 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 ViewController: SuperViewController {
override func viewDidLoad() {
// calling the super class version
super.viewDidLoad()
}
}

从 Storyboard中,将 View Controller 分配给 ViewController(子类),然后重建项目(cmd + b)。

现在,在选择所需的 View Controller 并选择“Connection Inspector”后,您应该会在 IBOutlets 部分看到:

enter image description here

您可以手动将它们连接到您的子类 ViewController 中存在的 UI 组件(从空圆圈拖动到组件)。它们应该看起来像:

enter image description here

就是这样!您的子类的 TableView 和标签应该继承父类(super class)中包含的内容。

希望这对您有所帮助。

关于swift - 如何让一个 UIViewController 继承另一个 UIViewController IBOutlets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42758029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com