У меня есть пользовательский вид коллекции в Viewcontroller, всякий раз, когда мой Collection View загружен, я всегда получаю свою первую ячейку пустой. Как удалить эту пустую ячейку.
//CollectionView functions
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return collectionData.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! collectionCell
let collectionData = self.collectionData[indexPath.row]
cell.NameLbl.text = collectionData["name"] as? String
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let Info: NSDictionary = self.collectionData[indexPath.item] as! NSDictionary
let vc = self.storyboard?.instantiateViewController(withIdentifier: "edit") as! editVC
self.navigationController?.pushViewController(vc, animated: false)
}
В зависимости от того, что вы должны обрабатывать, скрывая первый элемент, есть опции буксировки, которые вы, возможно, захотите реализовать:
1- Если вы можете удалить первый объект из источника данных (массив collectionData
), вы можете просто удалить из него первый элемент:
В вашем представлении контроллер (viewDidLoad()
) можно реализовать:
override func viewDidLoad() {
.
.
.
collectionData.remove(at: 0)
.
.
.
}
2-, если вам необходимо сохранить файл collectionData
как нет, не удаляя первый элемент, но он не должен отображаться в пользовательском интерфейсе, вам необходимо реализовать UICollectionViewDataSource
следующим образом:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// subtract 1
return collectionData.count - 1
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! collectionCell
// add 1 to indexPath.row
let collectionData = self.collectionData[indexPath.row + 1]
cell.NameLbl.text = collectionData["name"] as? String
return cell
}
Это должно привести к отображению представления коллекции, как ожидалось, без редактирования массива источников данных collectionData
.