UICollectionView 布局在 iPad 上崩溃,但在 iPhone 上工作正常
Posted
技术标签:
【中文标题】UICollectionView 布局在 iPad 上崩溃,但在 iPhone 上工作正常【英文标题】:UICollectionView layout crashes on iPad, but works fine on iPhone 【发布时间】:2015-05-06 14:55:40 【问题描述】:UICollection 视图布局在 ipad 中崩溃,但在 iphone 上运行良好。 我们是否必须以不同于 iphone 的方式管理 ipad 的 UICollection 视图布局?
我的代码:
-(void)reloadData
if(collectionData!= nil)
collectionData = nil;
[self.collectionView reloadData];
-(void)setCollectionView
if(self.collectionView == nil)
// self.collectionView = (UICollectionView *)[self.view viewWithTag:_wallCollectionView_tag];
self.collectionView.dataSource = self;
self.collectionView.delegate = self;
self.collectionView.userInteractionEnabled = YES;
`enter code here`- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
printf("\n = %s",__FUNCTION__);
return 1;
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
return [collectionData count];
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout*)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
if ( [ [ UIScreen mainScreen ] bounds ].size.width > 320)
return CGSizeMake(118, 118);
return CGSizeMake(100, 100);
【问题讨论】:
你有崩溃日志吗? 2015-05-06 18:21:53.777 FlrtAlertVariation[39992:1010801] 流布局 collectionView:layout:sizeForItemAtIndexPath:] 和 [_UIFlowLayoutItem setItemFrame:]: 消息中不支持负或零大小发送到已释放实例 0x7fcc35296310 和 2015-05-06 16:14:56.036 FlrtAlertVariation[37736:957131] *** 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*** -[__NSArrayM objectAtIndex:]:索引 5越界 [0 .. 4]' *** 首先抛出调用堆栈: @RavinderKumar 更新您的问题,不要在评论中发布异常。 【参考方案1】:*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 5 beyond bounds [0 .. 4]' ***
这清楚地表明,您试图访问超出数组范围的元素。下一步检查:
-
您对 -numberOfItemsInSection 方法和 -cellForItemAtIndexPath 方法使用相同的数组。
您不会在 collectionView 更新时改变数组(删除\添加元素)。
您正确访问数据源数组:要检索数组的最后一个元素,它有 5 个元素,您应该使用键“4” - collectionData[4] 或 collectionData[[collectionData count] - 1]。
【讨论】:
感谢您的回复。让我再次检查一下我的代码,我会更新。 大家好,我检查了我的代码,没有发现任何问题。但我有一个很大的疑问,这个应用程序在 iphone 上运行良好,我使用 Autoresizing it .xib,所以这个应用程序可以在 iphone 和 ipad 设备上运行。 .xib 文件中的自动调整大小是否有任何问题(与应用程序崩溃有关)???? 您的崩溃日志不完整。请为崩溃发布完整的堆栈跟踪,也许它会使问题更清楚。 1) [VCWallView2015-05-06 18:21:53.776 myproject[39992:1010801] 流布局不支持负数或零大小 2)[_UIFlowLayoutItem setItemFrame:]:消息发送到释放的实例0x7fcc35296310以上是关于UICollectionView 布局在 iPad 上崩溃,但在 iPhone 上工作正常的主要内容,如果未能解决你的问题,请参考以下文章
如何在单个列中设置每个 UICollectionView 部分
UICollectionView - 复制 Photos.app 功能