↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > カスタムクラスを作成する時いつも忘れる

カスタムクラスを作成時いつも忘れる。継承クラス作成時のメモ

カスタムクラスを作成する時いつもUIViewを継承する際のrequired Initの箇所でハマってしまうので覚書です。

参考:swiftでカスタムクラスを作ろう
参考:Storyboard上だけでUIButtonを角丸に!カスタムクラスで設定項目を拡張する!
参考:UIView inheritance and custom initializers throws EXC_BAD_ACCESS in swift

やってみた

NSObjectの場合


class TestNSObjectSubclass : NSObject {
    
    func test(){
        println("test is called");
    }
}

UIViewの場合


class TestUIViewSubclass : UIView {
    
    func test(){
        println("test is called");
    }
}

そのままです

カスタマイズ

コンストラクタに引数を渡したい場合は以下のように調整します

NSObjectの場合


class TestNSObjectSubclass : NSObject {
        
    init(param1:String){
        println("\(param1)");
    }
    
    func test(){
        println("test is called");
    }
}

UIViewの場合


class TestUIViewSubclass : UIView {
    
    init(frame: CGRect, param1:String){
        super.init(frame: frame);
        println("\(param1)");
    }
    
    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    func test(){
        println("test is called");
    }
}

UIVewを継承する際はこのrequred initが必要

まとめ

↓こんな記事もありますよ!


2021-05-14 14:21:41

WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。

AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、 昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は...

2021-05-06 14:04:37

LINEのアニメーションスタンプ制作の落とし穴、、、失敗談

ゴールデンウィークにLINEスタンプを作成してみました。 作り切って申請も通したんですが、意図したアニメーションと違う、、、、 LINEクリエーターの画面だと、アニメーションのプレビュー...

2021-05-01 18:05:35

久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。

忘れないようにメモ エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。 ターゲット→ex...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!