如何将IBOutlet添加到另一个文件中的子类?

huangapple go评论68阅读模式
英文:

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

huangapple
  • 本文由 发表于 2023年1月6日 11:47:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/75026748.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定