UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

SOLVED: Anoher initialising question

Forums > Swift

I have this custom view. This view always needs to be instantiated with an Annotation.

class MapImageLocationPin: UIView {
    //MARK: - Properties
    private var annotation: Annotation!

    //MARK: - Init
    override init(frame: CGRect) {
        super.init(frame: frame)
        configure()
    }

    required convenience init(with annotation: Annotation) {
        self.init(frame: .zero)
        self.annotation = annotation
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    //MARK: - Configure view
    private func configure() {
        print("Pin initialised! \(annotation.title)")
    }
}

The above setup fails (crash, nil value), because configure() is called in self.init, before the annotation is set.

How to solve this ??

2      

required convenience init(with annotation: Annotation) {
   self.init(frame: .zero)
   self.annotation = annotation
   self.configure()
}

2      

Hacking with Swift is sponsored by RevenueCat

SPONSORED Take the pain out of configuring and testing your paywalls. RevenueCat's Paywalls allow you to remotely configure your entire paywall view without any code changes or app updates.

Learn more here

Sponsor Hacking with Swift and reach the world's largest Swift community!

Archived topic

This topic has been closed due to inactivity, so you can't reply. Please create a new topic if you need to.

All interactions here are governed by our code of conduct.

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.