Я пытаюсь создать приложение, которое загружает UIWebView в «WebController», а под UIWebView находится кнопка, которая делает снимок экрана UIWebView и сохраняет его в моей PhotoLibrary. Я хочу отправить фотографию, которая была сделана при нажатии кнопки, на новый контроллер «ViewImageController» и вставить его в UIImageView, который находится в ViewImageController, для редактирования или выполнения каких-либо других действий. Я пытаюсь использовать segue внутри своего WebController для отправки изображения в мой ViewImageController. Я видел много статей о передаче изображений между контроллерами представления, но я обнаружил, что они имеют дело с делегатами UIImagePickerController, которые я не использую, поскольку я пытаюсь отправить только что сделанную фотографию вместо того, чтобы делать фотографию, а затем выбираю это изображение из ImagePicker для отправки. Пожалуйста, дайте мне знать, если это непонятно, чтобы я мог попытаться объяснить это лучше.
WebController.swift
var sendImage:UIImage!
....
....
....
@IBAction func takePhotoBtn(_ sender: UIButton) {
print("Screenshot")
// = UIImage
UIGraphicsBeginImageContext(webPageView.frame.size)
if let aContext = UIGraphicsGetCurrentContext(){
webPageView.layer.render(in: aContext)
}
var viewImage: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(viewImage!, nil, nil, nil)
viewImage = sendImage
self.performSegue(withIdentifier: "viewLargePhoto", sender: AnyObject.self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let viewImage: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
if segue.identifier == "viewLargePhoto" {
var viewPhotoController = segue.destination as! ViewPhotoController
//Line beneath is the trouble causer
viewPhotoController.imageView = sendImage//Cannot assign value of type 'UIImage!' to type 'UIImageView!'
}
}
ViewPhotoController.swift
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.hidesBarsOnTap = true
self.displayPhoto()
}
....
....
....
func displayPhoto(){
let screenSize: CGSize = UIScreen.main.bounds.size
let targetSize = CGSize(width: screenSize.width, height: screenSize.height)
let imageManager = PHImageManager.default()
imageManager.requestImage(for: self.photoAsset[self.index] as! PHAsset, targetSize: targetSize, contentMode: .aspectFit, options: nil, resultHandler: {(result,info)->Void in
self.imageView.image = result
})
}





Создайте var imageFromWebController: UIImage? в своем ViewPhotoController.swift
затем передайте свое изображение из WebController.swift как приведенный ниже код
if segue.identifier == "viewLargePhoto" {
var viewPhotoController = segue.destination as! ViewPhotoController
//Line beneath is the trouble causer
viewPhotoController.imageFromWebController = sendImage
}
Назначьте это изображение вашему imageView в ViewPhotoController
override func viewDidLoad() {
super.viewDidLoad()
imageView.image = imageFromWebController
}
Это ошибка, которую я получаю: HuntingLicense [69913: 3549111] <UIView: 0x7ffd9b70a930; кадр = (0 0; 375 667); авторазмер = W + H; Layer = <CALayer: 0x604000239b80 >> окно не равно окну просмотра <HuntingLicense.ViewPhotoController: 0x7ffd9b5582d0>!
@Duncan проверьте, используете ли вы 2 сегмента, вы можете использовать один или, возможно, это будет ошибка автоматического макета, перейдите к раскадровке и устраните ошибку ограничения
У меня была дополнительная строка кода в моей функции кнопки, которая вызывала другой переход. Я вынул его и не получил никаких ошибок, но я все еще в той же лодке, когда мне представили новый контроллер представления без изображения. Я все еще вижу, что мой телефон захватывает изображение при нажатии кнопки, но я не могу понять, как представить это изображение в контроллере представления, к которому переходит кнопка.
Спасибо, что предложили решение. К сожалению, он не передает изображение в ViewPhotoController. Я знаю, что кнопка выполняет некоторые действия, поскольку делает снимок экрана, поскольку я вижу изображение, если смотрю в PhotoLibrary, и оно переходит к ViewPhotoController. Когда я перехожу к ViewPhotoController, UIImageView пуст.