Snažím se předlisek přechod mezi můj domov view controller, aby se můj Náhled view controller, který bude skutečně ukazují pořízené fotografie. Pojmenoval jsem tento přechod ve scénáři jako "showPhoto". ale když se snažím vlastně přechod z domova zobrazení Řadič Zobrazení náhledu Regulátor jsem už několik chyb. První říká, že "Hodnota typu 'HomeViewController' nemá žádný člen "image "" Nicméně, můj náhled viewController je místo, kde tento obraz byl spojen takže já jsem si nejste jisti, proč Xcode je říct, že můj HomeView Řadič nemá žádné členské obraz, když by to měl být můj náhled View Controller, který je finta. 2. chyba zase říká, že "Nemůže najít" image "v působnosti" Můj kód je níže jak pro Domácí View Controller a Náhledu View Controller.
import UIKit
import AVFoundation
class HomeViewController: UIViewController, AVCapturePhotoCaptureDelegate {
var captureSession = AVCaptureSession()
var backCamera: AVCaptureDevice?
var frontCamera: AVCaptureDevice?
var currentCamera: AVCaptureDevice?
var photoOutput: AVCapturePhotoOutput?
var cameraPreviewLayer: AVCaptureVideoPreviewLayer?
@IBOutlet weak var camerabtn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
setupCaptureSession()
setupDevice()
setupInputOutput()
setupPreviewLayer()
startRunningCaptureSession()
}
func setupCaptureSession() {
captureSession.sessionPreset = AVCaptureSession.Preset.photo
}
func setupDevice() {
let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [AVCaptureDevice.DeviceType.builtInWideAngleCamera], mediaType: AVMediaType.video, position: AVCaptureDevice.Position.unspecified)
let devices = deviceDiscoverySession.devices
for device in devices {
if device.position == AVCaptureDevice.Position.back {
backCamera = device
} else if device.position == AVCaptureDevice.Position.front {
frontCamera = device
}
}
currentCamera = backCamera
}
func setupInputOutput() {
do {
let captureDeviceInput = try AVCaptureDeviceInput(device: currentCamera!)
captureSession.addInput(captureDeviceInput)
photoOutput = AVCapturePhotoOutput()
photoOutput?.setPreparedPhotoSettingsArray([AVCapturePhotoSettings(format: [AVVideoCodecKey: AVVideoCodecType.jpeg])], completionHandler: nil)
captureSession.addOutput(photoOutput!)
} catch {
print(error)
}
}
func setupPreviewLayer() {
cameraPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
cameraPreviewLayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill
cameraPreviewLayer?.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
cameraPreviewLayer?.frame = self.view.frame
self.view.layer.insertSublayer(cameraPreviewLayer!, at: 0)
}
func startRunningCaptureSession() {
captureSession.startRunning()
}
@IBAction func camerabtn(_ sender: Any) {
let settings = AVCapturePhotoSettings()
photoOutput?.capturePhoto(with: settings, delegate: self)
performSegue(withIdentifier: "showPhoto", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showPhoto " {
let previewVC = segue.destination as! PreviewViewController
previewVC.image = self.image
}
}
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
if let imageData = photo.fileDataRepresentation() {
image = UIImage(data: imageData)
performSegue(withIdentifier: "showPhoto", sender: nil)
}
}
}
import UIKit
class PreviewViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet weak var image : UIImageView!
@IBAction func cancelbtn(_ sender: Any) {
}
@IBAction func savebtn(_ sender: Any) {
}
}