我的一个ViewControllers中有一个UICollectionView但它根本没有显示。我不知道为什么会这样。我已经编写了我已经获得的两种不同类型单元格的代码以及CollectionView的所有其他代码,但它不起作用。
如果你们需要任何类型的信息,我会很乐意把它给你,但我不会马上去做,因为有很多地方可能会出现问题,所以我不是马上发布所有这些内容。我希望你明白。
Fyi:我的代码是用swift 3编写的,所以你知道并且我已经尝试清理我的项目并从代码中断开CollectionView并重新连接它。
非常感谢
我真的需要你的帮助,因为我不知道为什么会这样。
好的,所以这是代码:
class AddPersonViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UICollectionViewDelegate, UICollectionViewDataSource, APCodeCollectionCellDelegate {
然后介于两者之间还有一些东西
这里我设置了数据源和委托
collectionView.delegate = self
collectionView.dataSource = self
这里我做了一些自定义
collectionView.layer.borderColor = UIColor(red: 2/255, green: 11/255, blue: 57/255, alpha: 1.0).cgColor
collectionView.layer.borderWidth = 2
collectionView.layer.cornerRadius = 15
collectionView.clipsToBounds = true
最后这里是数据源的所有代码
//Collection View Cells
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return person.codes.count + 1
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if indexPath.row < self.person.codes.count {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CodeCell", for: indexPath) as! APCodeCollectionViewCell
cell.codeTextView.text = person.codes[indexPath.row].code
cell.nameLabel.text = person.codes[indexPath.row].title
cell.isFavorite = person.codes[indexPath.row].favorite
cell.codeTextView.layer.cornerRadius = 15
cell.layer.cornerRadius = 4
cell.backgroundColor = UIColor.white
cell.delegate = self
return cell
} else {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AddCell", for: indexPath) as! APAddCodeCollectionViewCell
cell.layer.cornerRadius = 4
cell.backgroundColor = UIColor.white
return cell
}
}
我真的希望这会有所帮助,否则我只会重新做一遍......
答案 0 :(得分:0)
答案 1 :(得分:0)
首先检查您的委托和dataSource是否已连接,如果没有,则设置委托和dataSource: -
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
override func viewDidLoad() {
super.viewDidLoad()
collectionView.delegate = self
collectionView.dataSource = self
}
在swift 3中,一段时间内出现了不导入UICollectionViewDelegate和UICollectionViewDataSource的问题。 如果您不导入这些文件,请检查委托方法或在委托方法中使用这些名称cellForItemAtIndexPath,numberOfItemsInSection
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
}
func collectionView(_ collectionView: UICollectionView, cellForItemAtIndexPath indexPath: IndexPath) -> UICollectionViewCell {
}
答案 2 :(得分:-1)
按ctrl并将uiimageView拖到控制器内部 与你的标签和你的控制器内部做同样的事情 做你的员工。