集合视图单元格未出现
Collection View Cells not appearing
我想显示与 buttons
一样多的 collectionViewCells
,因为我的数组中有字符串。但是当我启动模拟器时,只有 CollectionView
的背景,但没有显示单元格。可能是什么错误?
这是我的 CollectionViewController
的代码,我附加到 main.storyboard 中的 CollectionView
:
class CollectionViewController: UICollectionViewController {
var Array = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
Array = ["1","2","3","4","5"]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func collectionView(collectionView: UICollectionView, numberOfItemsSection section: Int) -> Int {
return Array.count
}
override func
collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! UICollectionViewCell
var button = cell.viewWithTag(1) as! UIButton
button.titleLabel?.text = Array[indexPath.row]
return cell
}
}
这些是集合视图控制器的连接:
故事板上的视图控制器:
func layoutCells() {
let layout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 0, left: 10, bottom: 10, right: 10)
layout.minimumInteritemSpacing = 5.0
layout.minimumLineSpacing = 5.0
layout.itemSize = CGSize(width: (UIScreen.mainScreen().bounds.size.width - 40)/3, height: ((UIScreen.mainScreen().bounds.size.width - 40)/3))
collectionView!.collectionViewLayout = layout
}
试试这个。从已加载的视图中调用此函数。我认为问题是您的 collection 布局不正确。
func viewDidLoad() {
layoutCells()
}
如果可行,您可以修改布局选项以满足您的需要。
您是否将 CollectionViewController
设置为故事板身份检查器? :)
在 viewDidLoad
方法中更改数据后,我会尝试调用 reloadData()
。
希望对您有所帮助
想法:
- 检查您的小区重用标识符是否已设置。
- 检查您是否在故事板中正确设置了集合视图子类。
- 将
print
语句放入您的 cellForItemAtIndexPath
函数中,看看它是否被调用过。
- 不确定这是否是一个问题,但
Array
实际上是 Swift 中的一个类型。使用它作为您的变量名可能会以某种方式扰乱逻辑。将其重命名为 array
(小写)。我相信无论如何这是变量名的最佳实践。
- 对
cellForItemAtIndexPath
中的单元格执行其他操作,例如更改背景颜色。如果可行,则可能是您对标签所做的操作有问题。
你的问题在
func collectionView(collectionView: UICollectionView, numberOfItemsSection section: Int)
方法签名。这是错误的。应该是
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
和 override
规范(因为 UICollectionViewController
有自己的,这就是为什么你得到空集合)。
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return Array.count
}
首先检查你是否使用过这个方法:-
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return searches.count
}
每个部分有一个搜索,所以部分的数量是搜索数组的计数。所以我们也可以根据需要使用这个 method.by 默认值我们可以使用 retuen 1
并按照 Link 中的步骤以获得更好的解决方案
Check this link
Select故事板中的UIButton
,勾选下图中左下角的installed
。
问题在于将标题设置为按钮,请使用以下代码。
override func
collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! UICollectionViewCell
var button = cell.viewWithTag(1) as! UIButton
//button.titleLabel?.text = Array[indexPath.row]
button.setTitle(Array[indexPath.row], forState: UIControlState.Normal)
return cell
}
希望对您有所帮助
确保为单元格设置了正确的重用标识符。
我有一个类似的问题,我发现这在某种程度上限制了我的单元格的大小。希望这有帮助。
检查您是否在故事板中设置了 CollectionView 出口(数据源、委托),如下所示
我从 CollectionViewController.m 文件中删除了这段代码
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
然后出现单元格
检查以确保单元格未隐藏。在下面添加此代码
cell.isHidden = false
单元格中的项目没有为我显示,因为我在以编程方式添加子视图时没有为每个添加的子视图设置 tamic。
subview.translatesAutoresizingMaskIntoConstraints = false
我想显示与 buttons
一样多的 collectionViewCells
,因为我的数组中有字符串。但是当我启动模拟器时,只有 CollectionView
的背景,但没有显示单元格。可能是什么错误?
这是我的 CollectionViewController
的代码,我附加到 main.storyboard 中的 CollectionView
:
class CollectionViewController: UICollectionViewController {
var Array = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
Array = ["1","2","3","4","5"]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func collectionView(collectionView: UICollectionView, numberOfItemsSection section: Int) -> Int {
return Array.count
}
override func
collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! UICollectionViewCell
var button = cell.viewWithTag(1) as! UIButton
button.titleLabel?.text = Array[indexPath.row]
return cell
}
}
这些是集合视图控制器的连接:
故事板上的视图控制器:
func layoutCells() {
let layout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 0, left: 10, bottom: 10, right: 10)
layout.minimumInteritemSpacing = 5.0
layout.minimumLineSpacing = 5.0
layout.itemSize = CGSize(width: (UIScreen.mainScreen().bounds.size.width - 40)/3, height: ((UIScreen.mainScreen().bounds.size.width - 40)/3))
collectionView!.collectionViewLayout = layout
}
试试这个。从已加载的视图中调用此函数。我认为问题是您的 collection 布局不正确。
func viewDidLoad() {
layoutCells()
}
如果可行,您可以修改布局选项以满足您的需要。
您是否将 CollectionViewController
设置为故事板身份检查器? :)
在 viewDidLoad
方法中更改数据后,我会尝试调用 reloadData()
。
希望对您有所帮助
想法:
- 检查您的小区重用标识符是否已设置。
- 检查您是否在故事板中正确设置了集合视图子类。
- 将
print
语句放入您的cellForItemAtIndexPath
函数中,看看它是否被调用过。 - 不确定这是否是一个问题,但
Array
实际上是 Swift 中的一个类型。使用它作为您的变量名可能会以某种方式扰乱逻辑。将其重命名为array
(小写)。我相信无论如何这是变量名的最佳实践。 - 对
cellForItemAtIndexPath
中的单元格执行其他操作,例如更改背景颜色。如果可行,则可能是您对标签所做的操作有问题。
你的问题在
func collectionView(collectionView: UICollectionView, numberOfItemsSection section: Int)
方法签名。这是错误的。应该是
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
和 override
规范(因为 UICollectionViewController
有自己的,这就是为什么你得到空集合)。
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return Array.count
}
首先检查你是否使用过这个方法:-
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return searches.count
}
每个部分有一个搜索,所以部分的数量是搜索数组的计数。所以我们也可以根据需要使用这个 method.by 默认值我们可以使用 retuen 1
并按照 Link 中的步骤以获得更好的解决方案 Check this link
Select故事板中的UIButton
,勾选下图中左下角的installed
。
问题在于将标题设置为按钮,请使用以下代码。
override func
collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! UICollectionViewCell
var button = cell.viewWithTag(1) as! UIButton
//button.titleLabel?.text = Array[indexPath.row]
button.setTitle(Array[indexPath.row], forState: UIControlState.Normal)
return cell
}
希望对您有所帮助
确保为单元格设置了正确的重用标识符。
我有一个类似的问题,我发现这在某种程度上限制了我的单元格的大小。希望这有帮助。
检查您是否在故事板中设置了 CollectionView 出口(数据源、委托),如下所示
我从 CollectionViewController.m 文件中删除了这段代码
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
然后出现单元格
检查以确保单元格未隐藏。在下面添加此代码
cell.isHidden = false
单元格中的项目没有为我显示,因为我在以编程方式添加子视图时没有为每个添加的子视图设置 tamic。
subview.translatesAutoresizingMaskIntoConstraints = false