Q6:关于xcode TableView使用Nib文件出现Assertion failure in dequeueReusableCellWithIdentifier:forIndexPath:错误

问题描述:

2015-01-17 15:40:03.244 StoreSearch[1863:80313] *** Assertion failure in -[UITableView _dequeueReusableViewOfType:withIdentifier:], /SourceCache/UIKit_Sim/UIKit-3318.16.14/UITableView.m:6090


申明该问题是出现于使用tableViewCell的nib文件时,其他情况只能作为借鉴参考!


问题解决步骤:



碰到此类问题,请添加一个Exception Breakpoint.

Q6:关于xcode TableView使用Nib文件出现Assertion failure in dequeueReusableCellWithIdentifier:forIndexPath:错误_第1张图片

在运行一次,发现错误被定位到:


因为采用了nib文件作为一个cell的模板,如图:

Q6:关于xcode TableView使用Nib文件出现Assertion failure in dequeueReusableCellWithIdentifier:forIndexPath:错误_第2张图片

于是我开始找问题,首先在cellForRowAtIndexPath 方法中 使用的重用方法是

func dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath) -> AnyObject

而非

func dequeueReusableCellWithIdentifier(identifier: String) -> AnyObject?

当然这里也可以给某些朋友一些警示,两个方法不同。

我检查了identifier 是否设置正确,是否拼写正确!有些粗心朋友会弄错。

随后我考虑到我创建了一个.xib文件 是否给其注册了,这里注意:在使用前必须给它注册,如下图:

可以看到我是创建了一个cellNib,然后register,对于这里的TableViewCellIdentifier,请别在意,我采用了结构体,当然你也得检查这里是否拼写正确!

我发现代码部分应该没有问题了,那么我最后决定在检查下.xib文件,最后发现原来在nib文件中多拉了一个lable.导致了错误。如下图:

Q6:关于xcode TableView使用Nib文件出现Assertion failure in dequeueReusableCellWithIdentifier:forIndexPath:错误_第3张图片


总结下:这个错误其实是我自身造成的,但是前面的分析希望大家参考下,因为很多情况是上面情况造成的!

最后求关注 谢谢!


你可能感兴趣的:(iOS,开发问题集合)