ios – 为什么在Interface Builder中向UITableViewCell子类添加手势识别器会使应用程序崩溃?

概述我有一个自定义的UITableViewCell子类,我正在尝试使用Interface Builder将一个捏手势识别添加到其中一个视图中.我的应用崩溃了: 2016-09-11 17:37:22.425 MYAPPNAME [4619:1284144] ***断言失败 – [ULFeedView _dequeueReusableViewOfType:withIdentifier:],/ Buil 我有一个自定义的UItableVIEwCell子类,我正在尝试使用Interface Builder将一个捏手势识别器添加到其中一个视图中.我的应用崩溃了:

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可以包含多个顶级对象.事实上,手势识别器作为顶级对象添加到笔尖.

任何使用多个顶级对象加载nib的代码都需要知道如何处理它.例如,为UItableVIEwCell加载nib的代码可以:

>在顶级对象数组中查找单元格对象
>确保没有其他单元格(因为添加一个可供选择的启发式方法是不切实际的)
>忽略所有顶级UIGestureRecognizer,因为它们被添加到的视图保留
>确保顶级对象数组中没有其他内容

不幸的是,Apple在加载UItableVIEwCell和UICollectionVIEwCell nib时选择处理多个顶级对象的方式是抛出异常.这就是我们无法在Interface Builder中向单元格添加手势识别器的原因.

总结

以上是内存溢出为你收集整理的ios – 为什么在Interface Builder中向UITableViewCell子类添加手势识别器会使应用程序崩溃?全部内容,希望文章能够帮你解决ios – 为什么在Interface Builder中向UITableViewCell子类添加手势识别器会使应用程序崩溃?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存