Я пытаюсь создать приложение рецепта с функцией загрузки рецепта. В PostController будет tableview всех этапов приготовления, каждый из которых находится в ячейке таблицы. в ячейке будет текстовое поле и UIImageView для загрузки изображения (изображение, выбранное из pickerController, будет отображаться в этом UIImageView для последующей загрузки). Я пытаюсь сделать imageViewInCell.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleImageUpload)))
, чтобы вызвать функцию handleImageUpload()
, которая создает UIImagePickerController. Но, выполнив это, я встретил две проблемы.Использование UIImagePickerController в каждой ячейке tableview
- Я не могу получить значение ячейки
index.row
селектором вUITapGestureRecognizer
, с вне индекса не могу присвоить выбранное изображение обратно в UIImageView клетки. Даже если я получил index.row в handleImageUpload, мне все еще нужна функция ниже, чтобы назначить выбранное изображение. Как эта функция примет мой параметр и найдет соответствующий imageViewInCell?
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { if let selectedImage: UIImage = info[UIImagePickerControllerOriginalImage] as? UIImage { imageViewInCell.image = selectedImage } dismiss(animated: true, completion: nil) }
Зачем использовать жест tap, а не didSelectRowAtIndexPath? –
Я добавил UITapGesture для imageView, потому что эта операция просто связана только с изображением. Использование didSelectRowAtIndexPath не может быть выбором, потому что в ячейке есть текстовое поле. –
Наконец, я сохранил индекс как с глобальной переменной 'selectedIndex' (используемой' didFinishPickingMediaWithInfo'), так и с 'cell.imageViewInCell.tag' (используемой' handleImageUpload() '), каждый раз, когда вызывается' handleImageUpload() ', он присваивает 'selectedIndex' значение' cell.imageViewInCell.tag'. В 'didFinishPickingMediaWithInfo' требуется глобальная переменная для поиска соответствующей ячейки. –