当前位置: 首页 > 面试题库 >

带有XIB Swift的UITableViewCell子类

王高超
2023-03-14
问题内容

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

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")
}
  1. 定义您的自定义单元格类:

    import UIKit
    

    class NameInput: UITableViewCell {

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

    }

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

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

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

  3. 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对您的应用有意义的所有引用。



 类似资料:
  • 问题内容: 我的代码中的子类别有些麻烦。 我的期望: 面包店 罐头食品 乳制品 肉 子类别 子类别 … 子类别 糖果和零食 子类别 子类别 … 子类别 MYSQL表架构: 分类: id类别名称url类型 结果:http : //www.picupload.us/images/454result.png 谢谢您的时间,福克斯·桑克(Fox Sank) 编辑: 这是桌子 问题答案: 我尝试这段代码,它

  • Update:这里是带有共享状态示例的CodeSandBox.io链接,它使用类组件,我希望在不复制状态或使用虚假状态更新的情况下将这些组件转换为钩子。

  • 问题内容: 我有一个表格视图,其中包含一个webView的单元格,我希望该单元格的高度与该webView的高度相匹配。 这是我使用的代码: 结果是这样的:https : //postimg.cc/image/8qew1lqjj/ 该webView是正确的高度,但单元格不是,如何解决此问题? 问题答案: TableView会自动调整单元格的大小,您只需要实现委托方法即可。 是的,您最初并不知道Web

  • 问题内容: 我已经在发送HTTP帖子的Objective-C中发送了方法,并且在正文中放置了一个字符串: 现在在Android中,我想做同样的事情,我正在寻找一种设置http帖子正文的方法。 问题答案: 您可以使用此代码段-

  • 例如,我想做这样的事情: 新建Select().from(Table).where(“id in?”,list).execute()

  • 记录具有id和名称 带有@Convert的DocumentModel 记录转换器 如果recordIds有多个值(例如:docId=1),即使: 嵌套选择不工作 IN子句有和没有()不工作 子句的成员不工作 导致本机SQL直接无法工作 @公式不工作 而且问题似乎是记录应该是单引号-逗号分隔的,而不仅仅是逗号分隔的,因为它们是字符串。(本机SQL查询在这种情况下工作)