2012-05-19 16 views
11

私は本当にストーリーボードに私のすべてのビューをレイアウトしたいと思っていますが、コードによって生成されるボタンに基づいて表示されるビューがあることもありますSegueのリファレンスはありません。ストーリーボードでは完全に切り離されます。私はまだストーリーボードでそれをデザインしたいと思っています。だから私はすべての私の画面の素晴らしい概観を持つことができます。ロードビューフォームSegueを持たないStoryBoard

UIViewControlerが読み込まれたときに、ストーリーボードでデザインされたXIB(またはストーリーボードにあるもの)を読み込むことはできますか?

+0

あなたは私たちにあなたがやろうとしているものの例を与えることができますか?新しい ビューを作成するのはどのような種類のデータですか?一般的には、新しいクラスを作成したり、同じクラスのビューを作成したり、ユーザーがenteryに応じてビューのコンテンツを非表示にしたり生成したりすることをお勧めします。 – Shawn

答えて

24

私は私のプロジェクトでこれを実行します。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
[self.navigationController pushViewController: myController animated:YES]; 

はちょうどあなたが正しくあなたのコントローラのIDを設定していることを確認してください。 、ユーティリティパネル内のストーリーボード

  • でコントローラを選択

    1. 属性インスペクタをクリックしてください:あなたはこれを行うことができます。 Identifierフィールドに入力するものは、 'instantiateViewControllerWithIdentifier'ステートメントの内容です。

    私はこれが役立つことを願っています。

  • +0

    は、私が探していたものを完璧にするのが簡単です。ありがとうございます。それは完全に必要なわけではありませんが、私のすべてのUIViewを1つの画面で見ることはいいです。 – Slee

    +0

    最初は運動ができませんでしたが、.. '[self presentViewController:vc animated:YES completion:NO];'最後の行で私のために魔法をしました。 –

    +0

    はいMayu、[self.navigationController push ...]を使用すると、そのビューコントローラがナビゲーションビューコントローラに組み込まれている場合にのみ動作することに注意してください。 – mihai

    2

    ビューコントローラにストーリーボードIDを割り当てる必要があります。

    IB>がアイデンティティインスペクタを表示>アイデンティティ>はストーリーボードID

    Storyboard ID

    スウィフト

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let viewcontroller = storyboard.instantiateViewControllerWithIdentifier("viewController") 
            as? UIViewController 
    if let navigationController = self.navigationController { 
        navigationController.pushViewController(viewcontroller!, animated: true) 
    }