- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 Collection View ,我在其中使用自定义 UICollectionViewFlowLayout
。此 Collection View 可以在本地或通过互联网加载图像。如果我在本地加载图像,每个导航都运行良好。但是,如果我通过互联网加载图像,屏幕会在第一次正确加载,但如果您点击图像并转到另一个屏幕,然后从该屏幕返回(它们都在导航 Controller 中),则有一个“访问错误”崩溃。有谁知道可能是什么原因。
在viewDidLoad中
[self.photosCollectionView registerNib:[UINib nibWithNibName:@"PhotoAlbumPhotosCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:kReuseIdentifierPhotosAlbumPhotosCollectionViewCell];
在 View 中会出现
[self fetchImagesFromInternetAsynchronously];
self.photosCollectionView.dataSource = self;
self.photosCollectionView.delegate = self;
self.photosCollectionViewFlowLayout = [UICollectionViewFlowLayout new];
self.photosCollectionViewFlowLayout.scrollDirection = UICollectionViewScrollDirectionVertical;
self.photosCollectionViewFlowLayout.minimumInteritemSpacing = 2.0f;
self.photosCollectionViewFlowLayout.minimumLineSpacing = 2.0f;
CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width;
CGFloat cellDimension = (screenWidth - 2*self.photosCollectionViewTrailingSpaceConstraint.constant - 3*self.photosCollectionViewFlowLayout.minimumInteritemSpacing)/4 - 1.0;
CGSize cellSize = CGSizeMake(cellDimension, cellDimension);
[self.photosCollectionViewFlowLayout setItemSize:cellSize];
[self.photosCollectionView setCollectionViewLayout:self.photosCollectionViewFlowLayout];
在 fetchImagesFromInternetAsynchronously
中,我在获取图像后执行 [self.photosCollectionView reloadData]
。
这是堆栈跟踪:
stop reason = EXC_BAD_ACCESS (code=1, address=0x8)
frame #0: 0x0000000112da0e09 UIKit`-[UICollectionViewData layoutAttributesForItemAtIndexPath:] + 248
frame #1: 0x0000000112d4f2d3 UIKit`-[UICollectionView _setCollectionViewLayout:animated:isInteractive:completion:] + 1893
frame #2: 0x0000000112d4e86b UIKit`-[UICollectionView setCollectionViewLayout:] + 318
* frame #3: 0x000000010be6b0aa app`-[PhotoAlbumPhotosPickerViewController viewWillAppear:](self=0x00007fd5830d3e00, _cmd="viewWillAppear:", animated=YES) + 1514 at PhotoAlbumPhotosPickerViewController.m:90
frame #4: 0x000000010eec85fd UIKit`-[UIViewController _setViewAppearState:isAnimating:] + 710
frame #5: 0x000000010eec8c98 UIKit`-[UIViewController __viewWillAppear:] + 149
frame #6: 0x000000010eef8a37 UIKit`-[UINavigationController _startCustomTransition:] + 1203
frame #7: 0x000000010ef08cdb UIKit`-[UINavigationController _startDeferredTransitionIfNeeded:] + 712
frame #8: 0x000000010ef09cea UIKit`-[UINavigationController __viewWillLayoutSubviews] + 57
frame #9: 0x000000010f0afc85 UIKit`-[UILayoutContainerView layoutSubviews] + 248
frame #10: 0x000000010ede4e40 UIKit`-[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 710
最佳答案
难以置信!
这就是最终奏效的方法。如果我在这解决的 Collection View 中添加页脚 View ,甚至会发生类似的崩溃。
替换
self.photosCollectionViewFlowLayout = [UICollectionViewFlowLayout new];
与
self.photosCollectionViewFlowLayout = (UICollectionViewFlowLayout*)self.photosCollectionView.collectionViewLayout;
或者在 viewWillDisappear 中添加这个(但是这并没有消除页脚 View 崩溃,所以最好使用第一种方法。
self.photosCollectionView.delegate = nil;
self.photosCollectionView.dataSource = nil;
关于ios - [UICollectionView setCollectionViewLayout :] 上的 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610261/
我有这个(layout是UICollectionViewFlowLayout子类): [layout invalidateLayout]; [self.collectionView setCollec
我通过移动单元格来更新 UICollectionView 的布局。 collectionView.moveItem(at: sourceIndex, to: destIndex) collection
我有两个自定义布局的 collectionView,如果发生某些操作,我将从数据源中删除两个项目并尝试设置不同的 Collection View [self.tabCollectionView
如果我更改 UICollectionView 的布局在方向更改期间,我在旋转几次后得到 EXC_BAD_ACCESS。 - (void)willRotateToInterfaceOrientation
我有一个 Collection View ,我在其中使用自定义 UICollectionViewFlowLayout。此 Collection View 可以在本地或通过互联网加载图像。如果我在本地加
我的 UICollectionView 出现奇怪的崩溃。崩溃的 UICollectionView 嵌入到另一个 UICollectionView 的 UICollectionView 单元中。 我无法
我正在尝试在 之间转换我的收藏 View 水平胶片布局和 垂直堆栈布局。 水平膜条 垂直/扩展堆栈 这就是我目前正在做的事情: 使用 setCollectionViewLayout(_:animate
这个把我难住了。 func updateCollectionView() { DispatchQueue.main.async { [weak self] in if let
我有两个 nib 文件,分别是 RowRecordLayout 和 ColumnLayout。 我确实将 nib 单元格注册到 UICollectionView,以便稍后在 cellForItemAt
我有一个 Collection View ,我必须动态更改 Collection View 的布局。在设置新布局时,应用程序崩溃并显示日志, 2016-02-15 13:47:31.663 Photo
我正在使用具有两个自定义布局的 UICollectionView - 它们是 UICollectionViewFlowLayout 的子类 当我的 View 首次加载时,我使用以下方法将其设置为默认
您好,我正在尝试使用 UICollection View 并让它们具有多个布局。 当我使用 swift/obj-cs setCollectionViewLayout(toLayout, animate
我正忙于 iOS7 中的 UICollectionView。 我要在两种不同的布局之间更改我的 Collection View 的布局。它们是 UICollectionViewFlowLayout 的
我是一名优秀的程序员,十分优秀!