Ich versuche, eine Rezept-App mit einer Rezept-Upload-Funktion zu bauen. Im PostController gibt es eine Tischansicht aller Kochschritte, jeweils in einer Tabellenansichtszelle. In der Zelle gibt es ein Textfeld der Beschreibung und ein UIImageView für Bild-Upload (das Bild von PickerController ausgewählt wird in diesem UIImageView für den späteren Upload angezeigt werden). Ich versuche imageViewInCell.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleImageUpload)))
zu tun, um die handleImageUpload()
Funktion aufzurufen, die einen UIImagePickerController generiert. Aber damit habe ich zwei Probleme gelöst.Mit UIImagePickerController in jeder Tabellenansicht Zelle
- kann ich nicht erhalte den
index.row
Wert der Zelle durch den Selektor inUITapGestureRecognizer
, mit aus dem Index I kann nicht das ausgewählte Bild auf die UIImageView der Zelle zuweisen zurück. Auch wenn ich index.row in handleImageUpload habe, brauche ich noch die Funktion unten, um das ausgewählte Bild zuzuweisen. Wie würde diese Funktion meinen Parameter akzeptieren und die entsprechende imageViewInCell finden?
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { if let selectedImage: UIImage = info[UIImagePickerControllerOriginalImage] as? UIImage { imageViewInCell.image = selectedImage } dismiss(animated: true, completion: nil) }
Warum wird anstelle von didSelectRowAtIndexPath eine Tippgeste verwendet? –
Ich habe UITapGesture für die imageView hinzugefügt, weil diese Operation einfach nur auf das Bild bezogen ist. Die Verwendung von didSelectRowAtIndexPath ist möglicherweise nicht die richtige Wahl, da sich in der Zelle auch ein Textfeld befindet. –
Schließlich habe ich den Index sowohl mit der globalen Variable 'selectedIndex' (verwendet von' didFinishPickingMediaWithInfo') als auch mit 'cell.imageViewInCell.tag' (verwendet von' handleImageUpload() ') gespeichert, jedesmal wenn' handleImageUpload() 'aufgerufen wird, Sie weisen 'selectedIndex' dem Wert' cell.imageViewInCell.tag' zu. In 'didFinishPickingMediaWithInfo' wird die globale Variable benötigt, um die entsprechende Zelle zu finden. –