无法将 UITableViewCell 设置为单元格
Posted
技术标签:
【中文标题】无法将 UITableViewCell 设置为单元格【英文标题】:can't set UITableViewCell as a cell 【发布时间】:2015-08-03 14:13:14 【问题描述】:我已经做了一个ViewController
,在那个ViewController
,我已经做了一个TableView
,在TableView
我已经添加了一个TableViewCell
。
在TableViewCell
中,我添加了一个文本标签和一个图像。
我制作了一个名为customCell
的可可触摸文件并将其与TableView Cell 连接起来。
在ViewController
文件中我写了这个:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell:customCell = tableView.dequeueReusableCellWithIdentifier("cell") as! customCell
cell.imageCountry.image = UIImage(named: "2xd.png")
cell.nameCountry.text = "hey"
return cell
这是我在 customCell 文件中写的: 导入 UIKit
class customCell: UITableViewCell
@IBOutlet var imageCountry: UIImageView!
@IBOutlet var nameCountry: UILabel!
我已将 TableView 和 ViewController 与 DataSource 和 Delegate 连接起来。 当我运行我的代码时,这是我得到的错误:
Could not cast value of type 'UITableViewCell' (0x10d1119f0) to 'refreshing.customCell' (0x10b2f6dd0).
*refreshing 是项目的名称。
而臭虫的绿线设置为这一行:
let cell:customCell = tableView.dequeueReusableCellWithIdentifier("cell") as! customCell
有什么建议吗?
【问题讨论】:
希望这会有所帮助:***.com/questions/29812168/… @Rambo 在链接中尝试了两个答案,我在 AppDelegate.swift 文件的这一行中得到另一个错误:class AppDelegate: UIResponder, UIApplicationDelegate 听起来与“单元格”标识符关联的单元格未定义为customCell
。当您说“将其与 TableView Cell 连接”时,您实际上是如何做到的?
@PhillipMills 在 MainStoryboard>ViewController>Table View>Cell>Identifier:"cell"
您是否还在情节提要中将单元格的类设置为customCell
?
【参考方案1】:
您正在使用旧的装饰方法,该方法要求您创建单元格或使用采用 indexPath 的新方法
let cell:customCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as! customCell
如果仍然失败,您需要注册单元格,方法是在情节提要中进行设置,或者在代码中注册类或 nib 文件。
override func viewDidLoad()
super.viewDidLoad()
tableView.registerNib(UINib(nibName: "customCell", bundle: nil), forCellReuseIdentifier: "cell")
或
override func viewDidLoad()
super.viewDidLoad()
self.tableView.registerClass(customCell.self, forCellReuseIdentifier: "cell")
【讨论】:
在你编辑之前,我添加了这一行:tableView.registerNib(UINib(nibName: "customCell", bundle: nil), forCellReuseIdentifier: "customCellOne")
它成功了!我想问为什么,因为当我输入 cell
它有错误(就像你编辑的那样)
错误是:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle:
,然后是很多行错误..为什么当我放置一个未命名为“cell”的标识符时它会起作用?
确定你没有使用过 registerNib 和一次 registerClass?
在使用 Nib 之前,我使用了 Class,但是当我使用 Nib 时,我对 Class 做了//
。为什么重要?【参考方案2】:
您需要在此处将自定义类设置为单元格的类^
要子类化,请确保在您的 CustomClass.h 文件中拥有
@interface CustomClass : UITableViewCell
【讨论】:
我在哪里输入这一行?:@interface CustomClass : UITableViewCell 它应该是您的 CustomCell.h 文件中的第一行之一,在任何导入之后 但看起来你实际上是这样做的,我在你的问题中错过了。 非常感谢您的帮助! @vikingosegundo 的回答帮助了我,在他的回答中查看我的评论为什么以上是关于无法将 UITableViewCell 设置为单元格的主要内容,如果未能解决你的问题,请参考以下文章
使用 NIB 无法识别 UITableViewCell 内单击的单元格 UITableView
点击时无法更改 UItableViewCell 中按钮的图像
在 UITableViewCell 中获取自定义单元格的高度
错误:无法使用自定义单元格类设置 UITableViewCell 标签和图像!只能加载单元格样式的数据:字幕不是自定义的