2017-08-04 11 views
0

CollectionViewの問題に直面しています。画像のコレクションを表示し、最後の項目として追加ボタンを追加したいと考えています。私はつもりはコアデータ var photoArray = [NSData]() にそれらの画像を保存していてたNSDataの後、私はUICollectionViewDataSourceCollectionViewに新しい項目を最後の項目からプログラムで追加する

func numberOfSections(in collectionView: UICollectionView) -> Int { 
    return 1 
} 

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    if indexPath.item == photoArray.count + 1 { 
     present(imagePicker, animated: true, completion: nil) 
    } 
} 
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return photoArray.count + 1 
} 
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

    guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photoItem", for: indexPath) as? PhotoCell else {return UICollectionViewCell()} 
    cell.btn.tag = indexPath.item 

    if indexPath.item == photoArray.count + 1 { 
     cell.thumImage.image = UIImage(named: "add_button") 
     cell.btn.isHidden = true 
     print("first") 
     return cell 
    } else { 
     let img = photoArray[indexPath.item] 
     cell.configureAddingImage(img: img) 
     print("second") 
     return cell 

    } 
} 

を実装して実際に私は、「致命的なエラーのような「cellForItemAt indexPath」の問題に直面しています:インデックスが範囲外です"アレイをvar photoArray: [NSData]!のように見せてもらえましたが、それは他の問題を引き起こしました。私に助言や助けをください、ありがとう!

答えて

0

Index is out of range項目または行はこのようにする必要があり0

からインデックス化されているので:

、おかげで問題を解決し
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

     guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photoItem", for: indexPath) as? PhotoCell else {return UICollectionViewCell()} 
     cell.btn.tag = indexPath.row 

     if indexPath.row == photoArray.count { 
      cell.thumImage.image = UIImage(named: "add_button") 
      cell.btn.isHidden = true 
      print("first") 
      return cell 
     } else { 
      let img = photoArray[indexPath.row] 
      cell.configureAddingImage(img: img) 
      print("second") 
      return cell 

     } 
    } 
+0

! – Just66

関連する問題