2012-04-04 16 views
2

storyboardsで提供される新しい機能を使用して、私のアプリの設定セクションを再構築しています。この時点で私のアプリの残りの部分に触れたくないので、私のメインのNIBが滞在します。今Nib内からストーリーボードを起動しますか?

NIBから行く「私はちょうどIBにtabBarviewControllerを追加し、私はそのタブが押されたときにロードしたいNIBNIB Nameプロパティを設定し、別のNIBtabBarエド。

しかし、私が見ることができる 'ストーリーボード名'のプロパティはありません。これはどのように行われますか?

答えて

3

現時点では「公式」な方法はありませんが、いくつかのトリックを使用して行うことができます。

1)通常の方法でnibのタブバーにビューコントローラを追加します。ペン先フィールドを空のままにします。

2)あなたのストーリーボードを作成し、ビューコントローラーを追加します。クラスを設定して)、自分の.mファイルに外部の実装やインタフェース

static BOOL aFlag = NO; 

4を静的ブールVARを追加)

3(私はこの例では、「theID」を使用します)ストーリーボードIDを設定しますあなたはタブバーのペン先からオブジェクトをロードするとき

  • :基本的に

    - (id) awakeAfterUsingCoder:(NSCoder *)aDecoder 
    { 
        if (!aFlag){ 
         aFlag = YES; 
         UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
         return [storyboard instantiateViewControllerWithIdentifier:@"theID"]; 
        } else { 
         return self; 
        } 
    } 
    

    :あなたのViewControllerクラスでこのメソッドをオーバーライド"initWithCoder"への最初の呼び出しが行われ、オブジェクトはinitWithCoderの後にnibなしでロードされます(

  • )。awakeAfterUsingCoderが呼び出され、そのオブジェクトがストーリーボードから読み込まれた別のオブジェクトに置き換えられます。同じクラスのオブジェクトが、あなたはストーリーボードからオブジェクト、initWithCoderとawakeAfterUsingCoderの両方に別のコールをロードする際にストーリーボード
  • にアーカイブ。あなたはループを回避し、自己を返すためにフラグを使用しますが、ここで必要な場合、私が試したし、それが;-) 良い作品

(2回目の呼び出しで、オブジェクトはその自己okです返すストーリーボードからロードされます)例のプロジェクト:http://www.lombax.it/files/testTabNib.zip

+0

それは働いたが、何らかの理由でTabBarItemの画像が消えてしまった。 – Kof

+1

タブバー項目(タブバーに表示されるボタン)は、タブバーではなく、View Controllerのプロパティです。したがって、ストーリーボードの新しいViewControllerにTab Bar Itemを追加する必要があります。プログラム的に、または単にグラフィカルに行うことができます。新しいTab Bar ItemをViewControllerの下のオブジェクトライブラリから(子として)ドラッグ/ドロップします。 – LombaX

関連する問題