Chyba při pokusu o přechod z jednoho pohledu správce k druhému

0

Otázka

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) {
    }
}
avfoundation ios photo swift
2021-11-22 04:07:37
2

Nejlepší odpověď

1

Ti se snaží projít UIImage do UIImageView. to není přístupné. Ve vašem PreviewViewController byste měli vytvořit objekt pro UIImage

var newImage: UIImage!

v HomeViewController

  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showPhoto " {
        let previewVC = segue.destination as! PreviewViewController
        previewVC.newImage = self.image
    }
}
2021-11-22 05:50:00

Jsem stále stejná chyba "Hodnota typu 'HomeViewController' nemá členských 'novýimage'" , "Nemůže najít 'novýimage v působnosti" , jsem přidal class PreviewViewController: UIViewController { var novýimage: UIImage! přepsat func viewDidLoad() { super.viewDidLoad() }
Wen Love Howard

čistý projekt a spustit znovu. může být, že to bude fungovat
amp.dev

opraveny. Problém byl, že var novýimage: UIImage! potřebné nastavení v domácnosti view controller jako wel
Wen Love Howard

Šťastný Kódování.. :)
amp.dev

děkuji!!! Šťastný kódování i vám :)
Wen Love Howard
0
@IBOutlet weak var image : UIImageView!

tento obraz majetku, není bezbariérový přístup, takže vytvořit nové vlastnosti obrazu, jako je tento.

var newImage: UIImage!
2021-11-22 04:33:40

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................