Whenever cellForItemAtIndexPath
is called in the CollectionView cell, I want to have a different identifier every time, but I don't know how to do it.Or is it not possible?
For example, on the first screen read, you generate 30 reusable cells with one identifier
, and the next time the screen is loaded, you generate 30 reusable cells with another identifier
.
CalendarCell*cell=[collectionView requestReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
The error must register anibor a class for the identifier or connect a protocol cell in a storyboard'
appears on the line above in the cellForItemAtIndexPath
(identifier
in the above line contains a different string each time the screen is loaded.) However, cellForItemIndexPatate>in
Storyboard
Collection Reusable View
can contain only one previously specified string.
So how can I generate a cell with a different identifier
each time?
Please let me know if anyone knows.I'm sorry, but I appreciate your cooperation.
You can create multiple Cell Identifiers by changing the Items value in the Storyboard and Attributes Inspector in the Collection View as shown below.If you set the item to 2, you can see that there are two cell prototypes in the Collection View.
"It ended without meeting the questioner's intentions, but I think it would be a waste to delete my answer as it is, so I would like to complete the answer by posting a sample of the """" program where cells change every time I tap the """" cell." On the Storyboard, create seven cell prototypes, each with Edit the Identifier
, CellA
, CellB
, ~, CellF
, and CellG
.ViewController
code.import UIKit
classViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate{
// An identifier of a cell is made constant by an array.
let identifiers: [String] = ["CellA", "CellB", "CellC", "CellD", "CellE", "CellF", "CellG" ]
// An integer variable that indicates the number of the array identifiers.
var num —Int=0
override func viewDidLoad(){
super.viewDidLoad()
// Do any additional setup after loading the view, typically from anib.
}
override funcdidReceiveMemoryWarning(){
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// Collection View Datasource and Delete
func numberOfSectionsInCollectionView (collectionView:UICollectionView) - > Int {
return1
}
functioncollectionView (collectionView:UICollectionView, numberOfItemsInSection section:Int) - > Int {
return 30 // The number of cells is fixed at 30
}
functioncollectionView (collectionView:UICollectionView, cellForItemAtIndexPathindexPath:NSIndexPath) - >UICollectionViewCell{
// Place the numth Identifier cell.
letcell=collectionView.dueReusableCellWithReuseIdentifier (identifiers [num], forIndexPath:indexPath) as!UICollectionViewCell
return cell
}
functioncollectionView(collectionView:UICollectionView, didSelectItemAtIndexPathindexPath:NSIndexPath){
// Each time a cell is tapped, it switches to CellA→CellB→ through→CellF→CellG→CellA→CellB→ through.
num=(num+1)%7
collectionView.reloadData()
}
}
© 2024 OneMinuteCode. All rights reserved.