ios - 在一个 xib 下快速加载多个 uitableview 单元格

标签 ios swift uitableview

我知道我们可以在 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;
}

enter image description here

但出现以下错误 *** 由于未捕获的异常“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/

相关文章:

swift - 显示分页结果,同时观察 Realm Swift 中的变化

c++ - 找不到我的着色器(Obj-C++、ios、opengles2.0)

ios - 如何使 RLMResults 可变?

ios - 为什么这个页面加载速度像 iframe 一样慢,但直接访问时正常?

ios - 如何从 swift 中的一系列 Sprite 中进行选择

uitableview - IOS Scrollable View 在另一个 ScrollView 里面

ios - 水平 UIStackView 中 UISlider 的高度

ios - addSubView - 在 UIView 中添加一个按钮也会为其 SuperView 添加相同的按钮

ios - 滚动时避免 UITableView 单元格中的数据重复

iphone - 无法弄清楚为什么我的应用程序在使用 NSKeyedArchivers/NSKeyedUnarchivers 时崩溃