英文:
How do I add an IBOutlet to subclass in another file?
问题
I going through Apple's book "Develop in Swift Data Collections" and the starting point as follows:
我们有一个表格视图控制器,其中有一个名为“Label Outlet”的标签。
我们有一个名为“EmojiTableViewController”的第一个Swift文件,其中有一个主要类。这个类连接到ViewController
class EmojiTableViewController: UITableViewController {
}
我们有一个名为“EmojiTableViewCell”的第二个Swift文件,其中有一个子类。这个类连接到单元格
class EmojiTableViewCell: UITableViewCell {
@IBOutlet var nameLabel: UILabel!
}
目标是将第二个文件(EmojiTableViewCell)中的IBOutlet与Storyboard连接起来。问题是,无论我做什么,“Assistant”都会打开主类。我应该如何更改助手以显示子类,或者如何通过代码连接出口?
英文:
I going through Apple's book "Develop in Swift Data Collections" and the starting point as follows:
We have a table view controller with "Label Outlet"
We have a first Swift file called "EmojiTableViewController" with main class.
This class is connected to ViewController
class EmojiTableViewController: UITableViewController {
}
We have a second Swift file called "EmojiTableViewCell" with subclass
This class is connected to cell
class EmojiTableViewCell: UITableViewCell {
@IBOutlet var nameLabel: UILabel!
}
And the goal is to connect IBOutlet in the second file (EmojiTableViewCell) with the Storyboad. The problem is that no matter what I do the "Assistant" opens the main class. How should I change assistant to show subclass or how could I connect outlets via code?
答案1
得分: 1
首先创建一个空的XIB文件,将其命名为EmojiTableViewXIB,然后从Xcode库中添加TableViewCell,然后将EmojiTableViewCell类设置为EmojiTableViewXIB.xib文件。
其次,在TableViewController文件中添加以下代码:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "EmojiTableViewCell", for: indexPath) as! EmojiTableViewCell
cell.nameLabel.text = "我的自定义文本"
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "EmojiTableViewCell", bundle: nil), forCellReuseIdentifier: "EmojiTableViewCell")
}
第三步,创建一个Tableview文件,并将该文件设置为TableViewController的视图。
最后,您可以运行这段代码。
//MARK: 您可以在以下GitHub存储库链接中找到运行的代码。
https://github.com/ahmetbostanciklioglu/IBOutletConnectionsFromCustomTableView.git
英文:
First create an empty XIB file and call it as EmojiTableViewXIB, then add TableViewCell from Xcode library and later set EmojiTableViewCell class to EmojiTableViewXIB.xib file.
Secondly add below code to TableViewController file:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "EmojiTableViewCell", for: indexPath) as! EmojiTableViewCell
cell.nameLabel.text = "My custom Text"
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "EmojiTableViewCell", bundle: nil), forCellReuseIdentifier: "EmojiTableViewCell")
}
Thirdly add create a Tableview file and set this file to view of TableViewController
Lastly run you can run the code.
//MARK: You can find running code from the below GitHub repo link.
https://github.com/ahmetbostanciklioglu/IBOutletConnectionsFromCustomTableView.git
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论