我是一名XCode新手,我正在尝试使用iOS8应用程序实现以下功能:
包含一个包含文本字段和按钮的初始标签:
步骤1和2非常简单。我被困在@第3点。现在在我的项目中我有:
FirstViewController.swift with:
以下针对UIButton的IBAction:
@IBAction func generateNewTabItem(sender: UIButton) {
let vc: MyCollectionViewController = MyCollectionViewController()
vc.title = newTabItemName.text
self.tabBarController?.viewControllers?.append(vc)
}
如果我运行应用程序,我会看到带有文本字段和按钮的初始视图;如果我更改文本并单击按钮,我会得到TabItem。我也可以按照自己的意愿做n次。问题是,如果我单击其中一个新选项卡,我会收到以下错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'UICollectionView must be initialized with a non-nil layout parameter'
我想我离我所需要的并不是那么远,但我不知道缺少什么。
有什么建议吗?
感谢。
...再见
答案 0 :(得分:0)
由于错误说明,如果没有布局,则无法初始化UICollectionView
。
请参阅我自己强调的initWithFrame:collectionViewLayout:
文档:
用于组织项目的布局对象。集合视图 存储对指定对象的强引用。 一定不能为。
UIKit
确实以UICollectionViewFlowLayout
的形式提供默认的集合视图布局。如果你想做更复杂的事情,你必须创建一个UICollectionViewLayout
的自定义子类。
无论您在何处创建UICollectionView
(可能在MyCollectionViewController
内),都需要更新以指定此类布局。