大佬教程收集整理的这篇文章主要介绍了ios – 为什么在Interface Builder中向UITableViewCell子类添加手势识别器会使应用程序崩溃?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
2016-09-11 17:37:22.425 MYAPPNAME [4619:1284144] ***断言失败 – [ULFeedView _dequeueReusableViewOfType:withIdentifier:],/ buildroot / Library / Cache / com.apple.xbs / source / UIKit / UIKit- 3512.60.12 / UITableView.m:6539
我尝试过不同的手势识别器(例如点击识别器)和不同的子视图,但它们都会使我的应用程序崩溃.
一个有趣的观察:如果我在awakeFromNib上以编程方式将识别器添加到视图中,它不会崩溃.
以下是一些可能相关的方法:
-(void)tableView:(UITableView *)tableView didSELEctRowATindexPath:(NSIndexPath *)indexPath{ [tableView deSELEctRowATindexPath:indexPath animated:YES]; if(indexPath.section != SECTION_CONTENT){ return; //index path section is NOT equal to SECTION CONTENT for the cell in question,so it will always return. } ... } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowATindexPath:(NSIndexPath *)indexPath{ switch (indexPath.section) { case SECTION_MAP: { ULMapCell *cell = [tableView dequeueReusableCellWithIdentifier:@"map" forIndexPath:indexPath]; return cell; //the cell in question is this one,so it will always return this cell. } ... }
更新:注册nib没有问题.在手势识别器之前,它已经完美地工作了.请停止告诉我如何为表视图注册nib,我已经知道这是一个高级iOS开发人员.
更新2:我确认它只在我通过Interface Builder添加它时才会出现,如果我以编程方式将其添加到任何地方都没有问题.
为什么会这样?
任何使用多个顶级对象加载nib的代码都需要知道如何处理它.例如,为UITableViewCell加载nib的代码可以:
>在顶级对象数组中查找单元格对象
>确保没有其他单元格(因为添加一个可供选择的启发式方法是不切实际的)
>忽略所有顶级UIGestureRecognizer,因为它们被添加到的视图保留
>确保顶级对象数组中没有其他内容
不幸的是,Apple在加载UITableViewCell和UICollectionViewCell nib时选择处理多个顶级对象的方式是抛出异常.这就是我们无法在Interface Builder中向单元格添加手势识别器的原因.
以上是大佬教程为你收集整理的ios – 为什么在Interface Builder中向UITableViewCell子类添加手势识别器会使应用程序崩溃?全部内容,希望文章能够帮你解决ios – 为什么在Interface Builder中向UITableViewCell子类添加手势识别器会使应用程序崩溃?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。