- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 StackOverflow 上搜索了这个问题的答案,并尝试了不同的实现方法。我有一个 collectionView
,它有一个按钮,当按下该按钮时,它会尝试初始化另一个 collectionView
。这是堆栈跟踪:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'UICollectionView must be initialized with a non-nil layout parameter'
*** First throw call stack:
(
0 CoreFoundation 0x000000010adb3d4b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x00000001079b321e objc_exception_throw + 48
2 CoreFoundation 0x000000010ae1d2b5 +[NSException raise:format:] + 197
3 UIKit 0x0000000108eca775 -[UICollectionView initWithFrame:collectionViewLayout:] + 76
4 UIKit 0x0000000108f13abb -[UICollectionViewController _newCollectionViewWithFrame:collectionViewLayout:] + 108
5 UIKit 0x0000000108f12c94 -[UICollectionViewController loadView] + 678
6 UIKit 0x000000010873761c -[UIViewController loadViewIfRequired] + 201
7 UIKit 0x0000000108737e70 -[UIViewController view] + 27
8 UIKit 0x0000000108ff86a4 -[_UIFullscreenPresentationController _setPresentedViewController:] + 87
9 UIKit 0x0000000108712702 -[UIPresentationController initWithPresentedViewController:presentingViewController:] + 141
10 UIKit 0x000000010874ae97 -[UIViewController _presentViewController:withAnimationController:completion:] + 3956
11 UIKit 0x000000010874e26b -[UIViewController _performCoordinatedPresentOrDismiss:animated:] + 530
12 UIKit 0x000000010874dd51 -[UIViewController presentViewController:animated:completion:] + 179
13 TheAppProject 0x0000000107385842 _TFC17TheAppProject15DailyController12publishedTapfT6senderCSo8UIButton_T_ + 754
14 TheAppProject 0x00000001073859fa _TToFC17TheAppProject15DailyController12publishedTapfT6senderCSo8UIButton_T_ + 58
15 UIKit 0x00000001085978bc -[UIApplication sendAction:to:from:forEvent:] + 83
16 UIKit 0x000000010871dc38 -[UIControl sendAction:to:forEvent:] + 67
17 UIKit 0x000000010871df51 -[UIControl _sendActionsForEvents:withEvent:] + 444
18 UIKit 0x000000010871ce4d -[UIControl touchesEnded:withEvent:] + 668
19 UIKit 0x0000000108605545 -[UIWindow _sendTouchesForEvent:] + 2747
20 UIKit 0x0000000108606c33 -[UIWindow sendEvent:] + 4011
21 UIKit 0x00000001085b39ab -[UIApplication sendEvent:] + 371
22 UIKit 0x0000000108da072d __dispatchPreprocessedEventFromEventQueue + 3248
23 UIKit 0x0000000108d99463 __handleEventQueue + 4879
24 CoreFoundation 0x000000010ad58761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
25 CoreFoundation 0x000000010ad3d98c __CFRunLoopDoSources0 + 556
26 CoreFoundation 0x000000010ad3ce76 __CFRunLoopRun + 918
27 CoreFoundation 0x000000010ad3c884 CFRunLoopRunSpecific + 420
28 GraphicsServices 0x000000010dc1ba6f GSEventRunModal + 161
29 UIKit 0x0000000108595c68 UIApplicationMain + 159
30 TheAppProject 0x0000000107366d8f main + 111
31 libdyld.dylib 0x000000010bd6368d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
这是我的代码:
private let reuseIdentifier = "cell"
class MyCollectionViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
let myCell = MyCell()
override func viewDidLoad() {
super.viewDidLoad()
let layout = UICollectionViewFlowLayout()
let collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
collectionView.backgroundColor = UIColor.black
collectionView.alwaysBounceVertical = true
collectionView.delegate = self
collectionView.dataSource = self
self.collectionView!.register(MyCell.self, forCellWithReuseIdentifier: reuseIdentifier)
}
// MARK: - Layout
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 325, height: 630)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 60.0
}
}
最佳答案
您的 MyCollectionViewController 类是 UICollectionViewController 的子类,它具有 collectionView 的属性,即实际的 UICollectionView 本身。因此,您在此行中创建的单独 UICollectionView:
let collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
与 self.collectionView 不同,self.collectionView 是由 UICollectionViewController 本身提供的。
所以这不是您收到的错误的来源。
事实上,您所看到的错误会传递给您创建和呈现 MyCollectionViewController 本身的方式。您没有显示有关如何创建它的代码,但您没有向它传递任何类型的布局。例如,要在代码中创建它,您可以这样做:
let layout = UICollectionViewFlowLayout()
let myCollectionVC = MyCollectionViewController(collectionViewLayout: layout)
关于ios - UiCollectionView 必须使用非 nil 布局参数初始化 Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44358118/
我有一个并排有两列的布局。有没有一种简单的方法可以使用单个 UICollectionView 来做到这一点?唯一的要求是该解决方案必须适用于 iOS 8,并且单元格必须在每列中垂直堆叠,如下所示:
我使用标准 UICollectionView与部分。我的单元格像网格一样排列。如果用户使用 Apple TV Remote 移动焦点,则所选方向的下一个单元格会正确聚焦。但是如果网格中有“间隙”,默认
这是我的 ImageController 类(一个 ViewController)仅显示 Collection View 的背景,而其中的单元格则不显示。有什么帮助吗?是不是我没有正确初始化什么? 这
我希望能够在 UICollectionView 中设置内容大小的最小高度,这样我就可以隐藏/显示 UISearchbar,类似于在 iBooks 上完成的方式。 但是,我不想对布局进行子类化,因为我想
有没有办法禁用 UICollectionView 的自动滚动细胞何时聚焦?当单元格进入焦点时,我想手动调整单元格的内容偏移量。 我不想更新内容偏移量: - (void)didUpdateFocusIn
如何将 UICollectionView 中的所有单元格垂直和水平居中使用 UICollectionViewFlowLayout ? 流布局根据滚动方向在右侧或底部留下间距。我想在所有方面设置相同的填
所以这是一个很无聊的问题,但我只是想不出一种非常简单的方法来检测当前关注的项目的 indexPath . 我环顾四周,希望看到一些非常简单的东西,例如 collectionView.indexPath
每当 UICollectionView 完全加载时,我都必须执行一些操作,即此时应调用所有 UICollectionView 的数据源/布局方法。我怎么知道?是否有任何委托(delegate)方法可以
每当 UICollectionView 完全加载时,我都必须执行一些操作,即此时应调用所有 UICollectionView 的数据源/布局方法。我怎么知道?是否有任何委托(delegate)方法可以
所以,UICollectionView 现在对我来说真的很痛苦。假设我有一个 UIViewController ,其中嵌入了一个 UICollectionView 。 CollectionView 的
好的,如果我有 UIViewController如果我使用这个 `preferredFocusedView ,我可以制作一个专注于 tvOS 的 View ,但是如何让 UICollectionVie
我已经构建了 2 个 Collection View ,1 个水平滚动(在顶部)和 1 个垂直滚动(在中间 - 底部),用于在我的 Objective-C iOS 应用程序中查看 2 组不同的内容,类
这就是我的问题,您在 gif 上看到的 4 个橙色矩形是单个垂直 UICollectionView = OrangeCollectionView。 绿色和紫色“卡片” View 是另一个 UIColl
大家好,我是 IOS 开发的新手,我有一个 UICollection,我在其中使用 SDWebImageCache 加载图像。问题是我的 UICollectionview 单元格在快速滚动时感觉像抽搐
我在 ViewController 中有两个 Collection View 。需要在用户滚动底部 UICollectionView 时自动滚动顶部 collectionView。 最佳答案 你可以试
我正在研究 UICollectionView,我有一个在单元格中使用 collectionView 的想法?可以吗 当我运行项目时,我收到一个错误 "InterFace Builder StoryBo
大家好,我收到以下错误 -UICollectionView 必须使用非 nil 布局参数进行初始化 PopularShotsCollectionViewController 的代码: import U
我的应用程序出现此错误: *** -[UICollectionView _endItemAnimations] 断言失败,/SourceCache/UIKit/UIKit-2372/UICollect
当我的 UIViewController 与 UICollectionView 一起出现时,内容会向上滚动一点,出现时。 我实现了 scrollViewDidScroll:我正在记录 contentO
我遇到了一个问题,在我的 UICollectionView 中,当返回的记录为 0 时,我需要显示一个页脚。下面的代码似乎运行良好,当没有记录时,显示页脚。但是,有一个问题,当有记录时,虽然foote
我是一名优秀的程序员,十分优秀!