我知道我们可以在 Objective C 中的一个 xib 下加载多个 uitableview 单元格,但也可以在 swift 中加载吗?
我尝试使用我在 Objective C 中使用的相同逻辑
var cellAuditDetails:AuditDetailsTableViewCell! = tableView.dequeueReusableCellWithIdentifier("customTrialDetailsCell", forIndexPath: indexPath) as! AuditDetailsTableViewCell
if indexPath.row == 0{
if(cellAuditDetails == nil)
{
cellAuditDetails = NSBundle.mainBundle().loadNibNamed("AuditDetailsTableViewCell", owner: self, options: nil)[0] as! AuditDetailsTableViewCell;
}
}
else{
cellAuditDetails = NSBundle.mainBundle().loadNibNamed("AuditDetailsTableViewCell", owner: self, options: nil)[1] as! AuditDetailsTableViewCell;
}
但出现以下错误 *** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“为标识符 (customTrialDetailsCell) 注册的 nib 无效 - nib 必须恰好包含一个顶级对象,该对象必须是 UITableViewCell 实例'
现在,如果我只使用一个单元格,那就没问题了。但是如何在同一个 xib 下加载多个单元格?因为每个新细胞都需要另一个 xib 是很烦人的。
最佳答案
我设法在 Swift 3 中解决了这个问题。感谢@waris-shams。这是解决方案:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "customCell")
if indexPath.row == 0{
if(cell == nil)
{
let cellAuditDetails:AuditDetailsTableViewCell = Bundle.main.loadNibNamed("AuditDetailsTableViewCell", owner: self, options: nil)? [0] as! AuditDetailsTableViewCell
cell = cellAuditDetails
}
}
else{
if(cell == nil)
{
let cellAuditDetails:AuditDetailsTableViewCell = Bundle.main.loadNibNamed("AuditDetailsTableViewCell", owner: self, options: nil)? [1] as! AuditDetailsTableViewCell
cell = cellAuditDetails
}
}
}
关于ios - 在一个 xib 下快速加载多个 uitableview 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38912688/