简体   繁体   English

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

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

I've been stuck on this problem for a couple of days and I'm not why my table view will never load correctly. 我已经在这个问题上停留了几天,这也不是为什么我的表视图永远无法正确加载的原因。 At first my cell was returning nil but now the console states: 起初,我的单元格返回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''

Here is my Custom Cell Class: 这是我的自定义单元格类别:

 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()
 }

}

And my corresponding tabbed-table view controller: 和我相应的标签表视图控制器:

     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
}

I can't seem to fully solve one problem without encountering another. 如果没有遇到另一个问题,我似乎无法完全解决一个问题。 Yes my custom table view cell is connected to my custom cell class and my view controller is also connected to the correct view. 是的,我的自定义表格视图单元格已连接到我的自定义单元格类,并且我的视图控制器也已连接到正确的视图。

My two problems in summary: 我的两个问题总结如下:

1) making sure my -cellForRowAtIndexPath doesn't return a nil cell 1)确保我的-cellForRowAtIndexPath不返回零单元格

2) avoiding this error: "Could not load NIB in bundle...with name 'AllBarsCell' " 2)避免出现此错误:“无法在捆绑包中加载NIB,名称为'AllBarsCell'”

Did you set the cell reuse identifier on the storyboard? 您是否在情节提要板上设置了单元重用标识符? That's usually what trips me up. 那通常就是让我绊倒的原因。

It is possible that you renamed the custom cell class file outside XCode. 您可能在XCode外部重命名了自定义单元类文件。 I think the error says that it can't find a nib file named "AllBarCell" in your project. 我认为该错误表明它在您的项目中找不到名为“ AllBarCell”的笔尖文件。 So double check the name of your class. 因此,请仔细检查您的班级名称。 Try to remove it from the project and re-add it and see what happens. 尝试从项目中删除它,然后重新添加它,看看会发生什么。

I had a similar issue, the syntax of the view controller and the custom cell class were ok, and everything was set up fine in the .xib file. 我有一个类似的问题,视图控制器的语法和自定义单元类都可以,并且在.xib文件中一切都设置正确。

The solution was in the storyboard. 解决方案在情节提要中。 You should place yourself on your customTableViewCell.xib, press the File Inspector icon, and in Target Memeberhsip set your project name option on 您应该将自己放在customTableViewCell.xib上,按File Inspector图标,然后在Target Memeberhsip中将项目名称选项设置为

在此处输入图片说明

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

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