2017-10-16 5 views
0

J'ai UICollectionView, je télécharge des images et les affiche dans les cellules. Ma première cellule est de largeur d'écran et contient un bouton, reste les cellules générales. L'application ne déques que les 2 premières cellules, il est supposé être 3 cellules.Cellules personnalisées Deque à partir d'un chemin d'index spécifique SWIFT

Ma fonction cellForItemAtIndexPath:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

    if indexPath.row == 0 { 
     print("yay") 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "UploadNewCell", for: indexPath) as! UploadNewCell 
     return cell 
    }else if indexPath.row > 0 { 
     let userImages = userposts[indexPath.row] 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ProfileCell", for: indexPath) as! ProfileCell 
      cell.fillCells(uid: uid!, userPost: userImages) 
      return cell 
    }else{ 
     return ProfileCell() 
    } 
} 
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 

    if indexPath.row == 0 { 
     print("hellowold") 
    } else { 
     let selecteditem : String! 
     selecteditem = userposts[indexPath.row] 
     performSegue(withIdentifier: "lol", sender: selecteditem) 
    } 
} 
func numberOfSections(in collectionView: UICollectionView) -> Int { 
    return 1 
} 


func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return userposts.count 


} 

mon avis:

enter image description here

Il est censé être 3 images là-bas dans les cellules, l'un d'eux est dequed dans le premier indice.

Je n'ai plus d'idées, des idées sur la solution?

+0

"Lorsque je sélectionne la cellule sur le premier index, il ne répond pas comme prévu." Où est ce code? – Larme

+0

@Larme Mettre à jour la question et la requête. La sélection de cellule se comporte bien maintenant. La suppression de la cellule est un problème. Voir la question à nouveau. Désolé pour l'erreur en demandant. –

+0

Le nombre d'articles dans les sections renvoie ...? – Larme

Répondre

1

let userImages = userposts[indexPath.row]

À ce stade de votre code, indexPath.row est> 0.
Les tableaux sont 0-basés, de sorte que la première cellule (indexPath.row == 1) est d'obtenir le deuxième élément de votre tableau (user posts[1]), qui est la deuxième image que vous vouliez.

Je peux penser à quelques changements simples:

  • Modifier l'index auquel vous accédez, par exemple:
    let userImages = userposts[indexPath.row - 1]
  • Ajoutez 1 à votre valeur userposts.count dans numberOfItemsInSection:
  • Divisez votre collectionView en ayant plusieurs sections, de sorte que la cellule supérieure (UploadNewCell) est la section 0 et les trois dernières ProfileCell sont une deuxième section: cela vous permet de vérifier le indexPath.section, TLY de la ligne:
    let userImages = userposts[indexPath.row]

Note: Je conseille effectivement de modifier davantage le code pour la deuxième option pour créer un ENUM pour SectionType. Cela vous permet d'effectuer un switch sur les valeurs potentielles, vous permettant d'éviter cette mise en œuvre par défaut méchant, et améliore la lisibilité de votre code.

+0

c'est parfait merci. J'ajoutais juste +1 à l'index. Ma faute. Ceci est apte à répondre. Merci pour votre réactivité. Cheers –

+1

et aussi, j'essayais juste la partie section. Je pense aussi, Enum sera une meilleure option pour éliminer les erreurs désagréables dans le futur –