Je veux afficher autant collectionViewCells
avec buttons
qu'il y a de chaînes dans mon tableau. mais lorsque je lance le simulateur, l'arrière-plan de la variable CollectionView
n'apparaît pas Quelle pourrait être l'erreur?
Voici le code de ma CollectionViewController
que j'ai attaché à la CollectionView
dans le tableau principal:
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
}
}
Voici les connexions du contrôleur de vue de collection:
Le contrôleur de vue sur le storyboard:
Avez-vous défini la CollectionViewController
sur l'inspecteur d'identité du storyboard? :)
Et j'essaierais d'appeler la reloadData()
après avoir modifié les données dans la méthode viewDidLoad
.
J'espère que cela pourra aider
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
}
Essaye ça. Appelez cette fonction depuis la vue ne s'est pas chargée. Je pense que le problème est que votre collection n'est pas correctement présentée.
func viewDidLoad() {
layoutCells()
}
Si cela fonctionne, vous pouvez modifier les options de mise en page pour répondre à vos besoins.
Le problème est de définir le titre sur le bouton, utilisez le code suivant.
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
}
J'espère que ça aide
J'ai eu un problème similaire, j'ai trouvé que c'était en quelque sorte restreindre la taille de ma cellule. J'espère que cela t'aides.
Idées:
print
dans votre fonction cellForItemAtIndexPath
pour voir si elle est appelée.Array
est en réalité un type dans Swift. En utilisant cela comme nom de variable, on pourrait jouer avec la logique. Renommez-le en array
(minuscule). Je crois que c'est de toute façon la meilleure pratique pour les noms de variables.cellForItemAtIndexPath
, par exemple en modifiant la couleur d'arrière-plan. Si cela fonctionne, il y a peut-être un problème avec ce que vous faites avec les balises.Tout d'abord, vérifiez que vous avez utilisé cette méthode: -
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return searches.count
}
Il y a une recherche par section, le nombre de sections est donc le nombre de recherches. Nous pouvons donc également utiliser selon les besoins cette méthode.par défaut, nous pouvons utiliser 1
Et suivez l’étape dans le lien pour une meilleure soluation Vérifiez ce lien
vérifiez que vous définissez les points de vente CollectionView (source de données, délégué) dans votre storyBoard comme indiqué ci-dessous.