如何从xib文件注册多个TableViewCells?

问题描述 投票:5回答:3

我在Swift 4工作,我在UITableViewCell遇到问题。我需要5种不同类型的单元格,所以我创建了一个.xib文件并创建了5个单元格。但是当TableViewController类中的寄存器nib具有相同的xib和不同的Cell标识符时...它的崩溃:

错误:

因未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'为标识符注册的无效nib(IntakeFormTextFieldCell) - nib必须包含一个必须是UITableViewCell实例的顶级对象

我的代码是:

override func viewDidLoad() {
    super.viewDidLoad()
    intakeFormTableView.register(UINib(nibName: "IntakeFormViews", bundle: nil), forCellReuseIdentifier: "IntakeFormTextFieldCell")
    intakeFormTableView.register(UINib(nibName: "IntakeFormViews", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell")
    // Do any additional setup after loading the view.
}

我粗略的xib文件是:enter image description here

我的问题是如何从一个xib文件中使用不同的单元格?这有什么简单而好的练习方法吗?

ios swift uitableview xib
3个回答
4
投票

您无法在One xib上创建多个自定义单元格。您需要为5个不同的单元格创建5个不同的Xib。您也很容易理解代码流。

override func viewDidLoad() {
   super.viewDidLoad()
   intakeFormTableView.register(UINib(nibName: "IntakeFormViews1", bundle: nil), forCellReuseIdentifier: "IntakeFormTextFieldCell1")
   intakeFormTableView.register(UINib(nibName: "IntakeFormViews2", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell2")
   intakeFormTableView.register(UINib(nibName: "IntakeFormViews3", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell3")
   intakeFormTableView.register(UINib(nibName: "IntakeFormViews4", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell4")
   intakeFormTableView.register(UINib(nibName: "IntakeFormViews5", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell5")
// Do any additional setup after loading the view.
}

0
投票

我认为你的单元格没有给出标识符“IntakeFormTextFieldCell”和“IntakeFormButtonCell”,这样你的应用就会崩溃。

intakeFormTableView.register(UINib(nibName: "IntakeFormViews", bundle: nil), forCellReuseIdentifier: "IntakeFormTextFieldCell")
intakeFormTableView.register(UINib(nibName: "IntakeFormViews", bundle: nil), forCellReuseIdentifier: "IntakeFormButtonCell")

每个单元格显示都有不同的xib和swift文件,它应该用UITableViewCell覆盖


0
投票

崩溃说你必须在单元格笔尖中只有一个顶级对象,即单元格视图本身,所以从单元格内容中删除任何拖动的对象

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.