Один UIImagePickerController для нескольких ImageVIews - PullRequest
0 голосов
/ 08 сентября 2018

Не могли бы вы помочь мне с UIImagePickerController

У меня 12 ImageViews в 1 ViewController. Мне нужна помощь, чтобы каждый ImageView мог выбрать разные фотографии из библиотеки. Кто-то сказал мне использовать теги для них, но я не могу заставить его работать, потому что я новичок в Swift.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Включить User Interaction Enabled для каждого UIImageView на раскадровке.

enter image description here

Добавьте TapGestureRecogniser к каждому UIImageView. Соедините каждый TapGestureRecogniser с IBAction.

@IBAction func tap(_ sender: UITapGestureRecognizer) {

    currentImageView = sender.view as! UIImageView

    let picker = UIImagePickerController()
    picker.delegate = self
    self.present(picker, animated: true, completion: nil)

}

Определить переменную для хранения тока UIImageView

private var currentImageView: UIImageView? = nil

Обработка выбора изображения и присвоение изображения currentImageView

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

    let image = info[UIImagePickerController.InfoKey.originalImage]
    currentImageView?.image = image as! UIImage

    self.dismiss(animated: true, completion: nil)
}
0 голосов
/ 08 сентября 2018

Речь не о Свифте. Вы устанавливаете номер «тега» в Интерфейсном конструкторе (или в коде. У потомков UIResponder есть свойство .tag). После этого вы делаете переключение в вашем методе обратного вызова, как

Чтобы было немного понятнее:

let picker: UIImagePicker! = { 
    // setup your image picker here, don't forget to set the proper delegate
}()

var lastSender: AnyObject?
func onTouch(_ sender: AnyObject?) {
    // add checks for the sender here
    lastSender = sender
    present(picker, animated: true, completion: *Your Completion*)
}

Делегат:

в

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])

let image = *Get Image From Info* lastSender?.image = image

...