Swift subclass UIView

ios, swift

Solution

I usually do something like this, its a bit verbose.

class MyView: UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
        addBehavior()
    }

    convenience init() {
        self.init(frame: CGRect.zero)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("This class does not support NSCoding")
    }

    func addBehavior() {
        print("Add all the behavior here")
    }
}



let u = MyView(frame: CGRect.zero)
let v = MyView()

(Edit: I've edited my answer so that the relation between the initializers is more clear)

Problem

I want to subclass `UIView` and show a login like view. I've created this in Objective-C, but now I want to port it to Swift. I do not use storyboards, so I create all my UI in code. But the first problem is that I must implement `initWithCoder`. I gave it a default implementation since It won't be called. Now when I run the program it crashes, because I've to implement `initWithFrame` as well. Now I got this: ``` override init() { super.init() println("Default init") } override init(frame: CGRect) { super.init(frame: frame) println("Frame init") } required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) println("Coder init") } ``` My question is where should I create my textfield etc... and if I never implement frame and coder how can I "hide" this?

Original source