2017-03-25 6 views
1

画像の配列から取得するコレクションビューを作成しましたが(今は8人が追加できます)。私はもともとスクロールビューを使用していましたが、コレクションで簡単に見つかりました。この素晴らしいコミュニティのおかげで、コレクションビューに移動しました。私は指定されたポイントでアイテムを削除するためにindexPathを見つける必要があります。だから私はこれまでに持っているいくつかのコードですが、私はこれを特に新しくしています。ここに私が現在持っているいくつかのコードがあります。コレクションコレクションの削除項目をその場所に応じて表示します。

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { 

@IBOutlet weak var myCollectionView: UICollectionView! 


func numberOfSections(in collectionView: UICollectionView) -> Int { 
    return 1 
} 
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return imageArray.count 
} 
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! UserFeedCollectionViewCell 
    cell.myImage.image = UIImage(named: imageArray[indexPath.row]) 
    cell.myImage.layer.cornerRadius = 12.0 
    cell.myImage.clipsToBounds = true 
    return cell 
} 

//delete item at current item - 2 

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    if indexPath.row > 2 { 


     myCollectionView.deleteItems(at: []) 
    } 
} 

が、これは助け、あなたが質問がある場合はコメント欄にお気軽に願っています。

編集:ページングが有効で、水平スクロールであり、各画像がセル全体を占有します。

+0

明確にするために、2つのアイテムをインデックス順に戻すのではなく、ユーザーが選択した順序で正しいものを表示しますか?そのため、ユーザーはアイテムをタップし、別のアイテムをタップし、別のアイテムをタップします。タップした最初のアイテムは、コレクションとそのストレージの場所の両方から削除する必要がありますか?そんな感じ? – Fahim

+0

はい、それはユーザーが現在行っているアイテムです.2より大きい場合は2アイテムを削除します。これが明確になることを願っています。例:img1、img2、img3。ユーザーは画像1で始まり、次の写真にスクロールして(横方向に)、次の画像が表示され、img2、次にimg3とimg1にスワイプしてから削除します。 –

答えて

0

イメージインデックスにタップした配列を保持するのはどうですか?

上部にあるインデックスのための変数を定義します。

var selected = [IndexPath]() 

次にとしてdidSelectItemAtを実装:最初の選択のために正常に動作しますが、その時点で、あなたが希望です上記

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    selected.append(indexPath) 
    if selected.count > 2 { 
     let ndx = selecte.count - 3 
     let twoBack = selected[ndx] 
     myCollectionView.deleteItems(at:[twoBack]) 
    } 
} 

selected配列をワイプしてからやり直すか、次の入力を処理するためのさらなる選択を追跡する必要があるかどうか、次の選択をどう扱うかを理解する必要があります。

進捗状況によっては、selectedアレイを消去するか、または削除して削除したアイテムを削除する必要があります。

関連する問題