gpt4 book ai didi

ios - 带有 XIB Swift 的 UITableViewCell 子类

转载 作者:IT王子 更新时间:2023-10-29 05:38:35 26 4
gpt4 key购买 nike

我有一个 UITableViewCell 子类 NameInput,它使用自定义 init 方法连接到 xib。

class NameInput: UITableViewCell {

class func make(label: String, placeholder: String) -> NameInput {

let input = NSBundle.mainBundle().loadNibNamed("NameInput", owner: nil, options: nil)[0] as NameInput

input.label.text = label
input.valueField.placeholder = placeholder
input.valueField.autocapitalizationType = .Words

return input
}

}

有没有一种方法可以在 viewDidLoad 方法中初始化这个单元格并仍然重用它?或者我是否必须使用重用标识符注册类本身?

最佳答案

习惯的NIB流程是:

  1. 使用重用标识符注册您的 NIB。在 Swift 3 中:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.register(UINib(nibName: "NameInput", bundle: nil), forCellReuseIdentifier: "Cell")
    }

    在 Swift 2 中:

    override func viewDidLoad() {
    super.viewDidLoad()

    tableView.registerNib(UINib(nibName: "NameInput", bundle: nil), forCellReuseIdentifier: "Cell")
    }
  2. 定义您的自定义单元格类:

    import UIKit

    class NameInput: UITableViewCell {

    @IBOutlet weak var firstNameLabel: UILabel!
    @IBOutlet weak var lastNameLabel: UILabel!

    }
  3. 在 Interface Builder 中创建一个 NIB 文件(与步骤 1 中引用的名称相同):

    • 在 NIB 中指定 tableview 单元格的基类以引用您的自定义单元格类(在步骤 2 中定义)。

    • 将 NIB 中单元格中的控件之间的引用连接到自定义单元格类中的 @IBOutlet 引用。

  4. 您的 cellForRowAtIndexPath 然后会实例化单元格并设置标签。在 Swift 3 中:

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! NameInput

    let person = people[indexPath.row]
    cell.firstNameLabel.text = person.firstName
    cell.lastNameLabel.text = person.lastName

    return cell
    }

    在 Swift 2 中:

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! NameInput

    let person = people[indexPath.row]
    cell.firstNameLabel.text = person.firstName
    cell.lastNameLabel.text = person.lastName

    return cell
    }

从您的示例中我不能完全确定您在单元格上放置了什么控件,但上面有两个 UILabel 控件。连接对您的应用有意义的任何 @IBOutlet 引用。

关于ios - 带有 XIB Swift 的 UITableViewCell 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28489720/

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