Home > Software design >  UIViewController can't override method from it's superclass
UIViewController can't override method from it's superclass

Time:01-22

I am actually experimenting with the Vision Framework. I have simply an UIImageView in my Storyboard and my class is from type UIViewController. But when I try to override viewDidAppear(_ animated: Bool) I get the error message: Method does not override any method from its superclass Do anyone know what the issue is? Couldn't find anything that works for me...

CodePudding user response:

So after looking at the code, you are declaring a new class called UIViewController. Maybe you meant extension instead of class. That's the reason the compiler could not find the method because you overwrote it by creating that new class called UIViewController.

replace

class UIViewController {

with

extension UIViewController {

CodePudding user response:

This is my complete code:

import UIKit
import Vision

class ViewController: UIViewController {

    @IBOutlet weak var imageView: UIImageView!
    var imageOrientation = CGImagePropertyOrientation(.up)
    
    override func viewDidAppear(_ animated: Bool) {
        
        super.viewDidAppear(animated)
        
        if let image = UIImage(named: "group") {
            imageView.image = image
            imageView.contentMode = .scaleAspectFit
            imageOrientation = CGImagePropertyOrientation(image.imageOrientation)
            
            guard let cgImage = image.cgImage else {return}
            setupVision(image: cgImage)
        }
    }
    
    private func setupVision (image: CGImage) {
        let faceDetectionRequest = VNDetectFaceRectanglesRequest(completionHandler: self.handelFaceDetectionRequest)
        
        let imageRequestHandler = VNImageRequestHandler(cgImage: image, orientation: imageOrientation, options: [:])
    
        do {
            try imageRequestHandler.perform([faceDetectionRequest])
        }catch let error as NSError {
            print(error)
            return
        }
    }
    
    private func handelFaceDetectionRequest (request: VNRequest?, error: Error?) {
        if let requestError = error as NSError? {
            print(requestError)
            return
        }
        
        guard let image = imageView.image else {return}
        guard let cgImage = image.cgImage else {return}
        
        let imageRect = self.determineScale(cgImage: cgImage, imageViewFrame: imageView.frame)
        
        self.imageView.layer.sublayers = nil
        
        if let results = request?.results as? [VNFaceObservation] {
            for observation in results {
                let faceRect = convertUnitToPoint(originalImageRect: imageRect, targetRect: observation.boundingBox)
                
                let emojiRect = CGRect(x: faceRect.origin.x, y: faceRect.origin.y - 5, width: faceRect.size.width    5, height: faceRect.size.height   5)
            
                let textLayer = CATextLayer()
                textLayer.string = "           
  •  Tags:  
  • Related