2016-04-05 10 views
4

私は1つの基本クラスがのiOSスウィフトサブクラス化のViewControllerファイル

MyViewController: UIViewController 

一部店舗でMyViewController.xibによって初期化できます。私は、MyViewControllerにMyViewController.xibにMyViewController.swift(すべてがUIViewControllerから継承されます)にはどんなのinitメソッドをファイル所有者クラスを設定していない、と次の行は、期待と同じように動作します:

let vc = MyViewController() 

ビュープロパティは、コンセント設定されています設定されています。

私はMyViewControllerをサブクラス化したい:

SecondViewController: MyViewController 
{ 
    override init() 
    { 
     super.init() 
    } 

    required init?(coder aDecoder: NSCoder) 
    { 
     super.init(coder: aDecoder) 
    } 
} 

は今、私は期待して、その行

let vc = SecondViewController() 

は、ビューとMyViewControllerから継承されたコンセントにビューコントローラを作成しますが、VCのすべてのコンセントは皆無です。 MyViewController.xibファイルが見逃されているようです。私は間違って何をしていますか?

+0

https://stackoverflow.com/questions/27336730/subclassing-a-subclassed-uiviewcontroller-that-has-a-xib –

答えて

6

xibファイルを拡張することはできません。 SecondViewControllerには独自のxibファイルと独自のアウトレットが必要です。共通のUIコンポーネントを基本クラスMyViewControllerに定義し、作成するxibごとにuiコンポーネントを直接ベースクラスにリンクすることができます。 たとえば、すべてのビューコントローラに共通のカスタム戻るボタンがある場合、コンセント定義をベースクラスに追加し、各xibファイルにUIButtonを追加し、コンセントをベースクラスに設定します。

+1

ありがとうございました。これを聞いても貧しい。私は、サブクラスのシステムは、各サブクラスで同じ設定をしているわけではないと信じています(同じベースのUIを持つ100個のサブクラス、同じ100個のxibファイルを作りたくない場合はどうなりますか?おそらく私はxibでinitの内部調理を理解していないだろうが、今はただ一つの良い解決策しか見ていない - すべての基本UIをxibではなくMyViewControllerのコードにする。 –

+2

その場合は、ベースクラスのコードで共通のUIを手動で作成することも、別のUIViewControllerのスタンドアロンxibファイルで作成して、インスタンス化してサブビューとして追加することもできます –

関連する問題