2016-09-10 9 views
0

В настоящее время я создаю приложение с целью, чтобы пользователь мог загрузить изображение в нужную ячейку коллекции, нажав на кнопку внутри ячейки. До сих пор я мог выбрать изображение, но он никогда не пойдет в назначенную ячейку. Для удобства вопроса я покажу код, который я использовал для первых трех ячеек.Использование подборщика изображений для загрузки изображений в две ячейки просмотра коллекции

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
let returnCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell1", forIndexPath: indexPath) as! FirstCollectionViewCell 

    if indexPath.row == 0 { 
     let cell1 = collectionView.dequeueReusableCellWithReuseIdentifier("cell1", forIndexPath: indexPath) as! FirstCollectionViewCell 
     cell1.backgroundColor = UIColor.redColor() 
     cell1.firstAdd.addTarget(self, action: "importPicture:", forControlEvents: UIControlEvents.TouchUpInside) 
     currentPickerTarget = cell1.firstImages 
     return cell1 

    } else if indexPath.row == 1 { 

     let cell2 = collectionView.dequeueReusableCellWithReuseIdentifier("cell2", forIndexPath: indexPath) as! SecondCollectionViewCell 
     cell2.backgroundColor = UIColor.blueColor() 
     cell2.secondAdd.addTarget(self, action: "secondImport:", forControlEvents: UIControlEvents.TouchUpInside) 
     secondPickerTarget = cell2.secondImages 
     return cell2 

    } else if indexPath.row == 2 { 
     let cell3 = collectionView.dequeueReusableCellWithReuseIdentifier("cell3", forIndexPath: indexPath) as! ThirdCollectionViewCell 
     cell3.backgroundColor = UIColor.redColor() 
     cell3.thirdAdd.addTarget(self, action: #selector(ViewController.importPicture(_:)), forControlEvents: .TouchUpInside) 
     return cell3 
    } 
return returnCell 

} 

func importPicture(sender: UIButton) { 

    let point = myCollectionView.convertPoint(CGPoint.zero, fromView: sender) 
    let indexPath = myCollectionView.indexPathForItemAtPoint(point) 
    let cell1 = myCollectionView.dequeueReusableCellWithReuseIdentifier("cell1", forIndexPath: indexPath!) as! FirstCollectionViewCell 

    currentPickerTarget = cell1.firstImages 

    imagePicker.delegate = self 
    imagePicker.sourceType = .PhotoLibrary 
    imagePicker.allowsEditing = true 

    presentViewController(imagePicker, animated: true, completion: nil) 
} 

func secondImport(sender: UIButton) { 
    let point = myCollectionView.convertPoint(CGPoint.zero, fromView: sender) 
    let indexPath = myCollectionView.indexPathForItemAtPoint(point) 
    let cell2 = myCollectionView.dequeueReusableCellWithReuseIdentifier("cell2", forIndexPath: indexPath!) as! SecondCollectionViewCell 

    print("\(indexPath!.row)") 

    secondPickerTarget = cell2.secondImages 
    secondPicker.delegate = self 
    secondPicker.sourceType = .PhotoLibrary 
    secondPicker.allowsEditing = true 

    presentViewController(secondPicker, animated: true, completion: nil) 

} 

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

    imagePicker.dismissViewControllerAnimated(true, completion: nil) 
    secondPicker.dismissViewControllerAnimated(true, completion: nil) 

    let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage 
    currentPickerTarget.image = pickedImage 
    secondPickerTarget.image = pickedImage 
} 

ответ

0

Вы можете сделать массив изображений по умолчанию или пустых изображений и добавить кнопку в каждую ячейку выше изображения. Назначьте тег кнопке в соответствии с ячейкой. Когда пользователь нажимает на какую-либо ячейку, обнаруживает ее количество, а затем выбирает изображение из галереи или объекта обновления камеры по индексу в массиве и перезагружает collectionview или вы можете перезагрузить определенную ячейку в виде коллекции. Надеюсь, что это поможет :)