2017-04-03 8 views
0

スーパークラスとサブクラスが2つの別々のストーリーボードにあるビューコントローラをサブクラス化したいとします。スーパークラスには、IBOutletがストーリーボードを介して接続されており、サブクラスも同じです。複数のストーリーボードからUIViewControllerをサブクラス化する

質問: はそれがスーパークラスのIBOutlet接続はストーリーボードから使用されるように、サブクラスを作成することは可能ですか? (AKA IBOutletsがゼロではなく、awakeFromNibが呼び出される)

セットアップ:

スーパークラスIBOutlet UIViewのプロパティbaseContainerViewとBaseStoryboardを用いBaseViewControllerあります。

サブクラスはSpecialViewControllerがBaseViewControllerから継承SpecialStoryboard

を用いSpecialViewControllerあります。

現在の問題:

私はそれ(SpecialStoryboard)絵コンテだからSpecialViewControllerのインスタンスをインスタンス化した場合のviewDidLoadが呼ばれたとき、それのスーパークラス(BaseViewController)のcontainerViewプロパティはnilです。 SpecialViewControllerのスーパークラス(BaseViewController)をストーリーボードからロードすることは可能ですか?

答えて

1

クラスは継承をサポートしていますが、シーンはサポートしていません。

ビューコントローラをサブクラス化すると、そのスーパークラスに存在するアウトレットを継承しますが、これらのアウトレットは、サブクラスを使用するシーン内の値を明示的に割り当てる必要があります。

シーンは、そのビューコントローラのクラスを指定しますが、ビューコントローラクラスには、そのシーンが使用されているシーンに「戻る」リンクがありません。シーンとビューコントローラクラスの間には「多対1」の関係があります。あなたが求めているものが可能だった場合、iOSは、あなたが "継承"したいと思っていたビューコントローラが潜在的に多く使用されているシーンのどれを知っていますか?スーパーアウトレットfooを定義し、あなたには、いくつかのシーンでスーパークラスを使用してい

からといって、それはあなたがそれらのシーンを関係なく、そのうちの(異なるシーンでサブクラスを使用するストーリーボードを使用する場合fooは、いくつかの値を持つことを意味するものではありませんにあります)。サブクラスを使用するシーンのオブジェクトをfooに直接割り当てる必要があります。

+0

ありがとうポール、私はこれを確認していました。 –

関連する問題