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子类添加手势识别器会使应用程序崩溃?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)