繁体   English   中英

无法在捆绑中为自定义表视图单元格类加载NIB

[英]Could not load NIB in Bundle for Custom Table View Cell Class

我已经在这个问题上停留了几天,这也不是为什么我的表视图永远无法正确加载的原因。 起初,我的单元格返回nil,但现在控制台指出:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/JosephHaddad/Library/Developer/CoreSimulator/Devices/2884D7B1-26CD-45F7-A044-9106962AE093/data/Containers/Bundle/Application/005E1198-CFA5-429B-960B-2367296BB6AD/Test.app> (loaded)' with name 'AllBarCell''

这是我的自定义单元格类别:

 import UIKit
 import Foundation

 class AllBarCell: UITableViewCell {

// MARK: Properties


@IBOutlet weak var primaryBarImage: UIImageView?
@IBOutlet weak var barName: UILabel?
@IBOutlet weak var happyHourImage: UIImageView?
@IBOutlet weak var entImage: UIImageView?

struct Static  {
    static var data = CellDataDisplayInformation()
}


// MARK: Methods


override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

override func prepareForReuse() {
    self.barName?.text = nil
    super.prepareForReuse()
 }

}

和我相应的标签表视图控制器:

     override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.tableView.registerNib(UINib(nibName: "AllBarCell", bundle: nil), forCellReuseIdentifier: "AllBarCell")
  .....




     override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)-> UITableViewCell{

    let cell  = tableView.dequeueReusableCellWithIdentifier("AllBarCell", forIndexPath: indexPath) as! AllBarCell
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0)) {

        dispatch_async(dispatch_get_main_queue()) {


            if let futureCell = tableView.cellForRowAtIndexPath(indexPath) as?  AllBarCell {

                let data = AllBarCell.Static.data


                // Update Happy Hour Image


                let currentHour = GetTime()

                if data.happyStart[indexPath.row] != 999{
                    if currentHour.currentHour >= data.happyStart[indexPath.row] && currentHour.currentHour <=  data.happyEnd[indexPath.row] {
                        var barImage = UIImage(named: "HH")
                        futureCell.happyHourImage?.image = barImage
                    }
                }


                // Update Entertainment Hour Image


                if data.entStart[indexPath.row] != 999 {
                    if currentHour.currentHour >= data.entStart[indexPath.row] && currentHour.currentHour <=  data.entEnd[indexPath.row] {
                        var barImage = UIImage(named: "Ent")
                        futureCell.entImage?.image = barImage
                    }
                }


                // Update Bar Names

                if data.pictureArray[indexPath.row] != nil {
                futureCell.primaryBarImage?.image = data.pictureArray[indexPath.row]
                }

                if data.namesArray[indexPath.row] != nil {
                futureCell.barName?.text = data.namesArray[indexPath.row]
                }



            }
        }
    }

    return cell
}

如果没有遇到另一个问题,我似乎无法完全解决一个问题。 是的,我的自定义表格视图单元格已连接到我的自定义单元格类,并且我的视图控制器也已连接到正确的视图。

我的两个问题总结如下:

1)确保我的-cellForRowAtIndexPath不返回零单元格

2)避免出现此错误:“无法在捆绑包中加载NIB,名称为'AllBarsCell'”

您是否在情节提要板上设置了单元重用标识符? 那通常就是让我绊倒的原因。

您可能在XCode外部重命名了自定义单元类文件。 我认为该错误表明它在您的项目中找不到名为“ AllBarCell”的笔尖文件。 因此,请仔细检查您的班级名称。 尝试从项目中删除它,然后重新添加它,看看会发生什么。

我有一个类似的问题,视图控制器的语法和自定义单元类都可以,并且在.xib文件中一切都设置正确。

解决方案在情节提要中。 您应该将自己放在customTableViewCell.xib上,按File Inspector图标,然后在Target Memeberhsip中将项目名称选项设置为

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM