2011-11-02 19 views
28

おそらく単純な解決策がありますが、わかりません。新しいViewControllerをStoryboardにリンクしていますか?

私はインターフェイス用にストーリーボードを使用しています。

私はタブバーコントローラーから始めますが、ユーザーがアプリを使用する前に、ユーザーは開始時にモーダルにプッシュされたloginviewを通して自分自身を認証する必要があります。

同じストーリーボードでloginviewを設定したいのですが、ストーリーボードと私のコードでView Controllerをリンクする方法を理解することができません。私がやっていること

  • が新しいのUIViewControllerサブクラストラフファイル]> [新規]> [新しいファイルを作成します。
  • ドラッグカスタムクラスタブ
  • でクラスを設定してストーリーボードに新規のUIViewController
  • はテスト目的のためにUILabelをドラッグ。
  • 実行

MainStoryboardへのログイン・ビュー・コントローラとして動作する新しいのUIViewControllerではありませんラベル...

答えて

40

プル。属性インスペクタで、識別子をLoginViewController(または適切なもの)に変更します。次に、First View Controllerに

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
    [vc setModalPresentationStyle:UIModalPresentationFullScreen]; 

    [self presentModalViewController:vc animated:YES]; 
} 

を追加すると、ログイン画面がストーリーボードから読み込まれて表示されます。

これが役に立ちます。

+0

いいえ、それは私が意味するものではありません。 .mファイルと.hファイルがあり、.xibファイルは必要ありませんが、メインのストーリーボードのビューを構成します。 – Justin

+0

メインストーリーボードの中にログイン画面を作成する方法を説明しましたので、xibは必要ありません。 –

+0

しかし、それは私が望むものではありません。たとえば、動的なテーブルビューを使用している場合、セルが押されたときにビューをプッシュしたいとします。しかし、どうやってそれをストーリーボードで作ることができますか? – Justin

6

上記のScott Sherwoodの答えは、多くの検索の結果、私が見つけた最も正しい答えです。新しいSDK(6.1)に従って非常にわずかな変更がありますが、presentModalViewControllerは推奨されなくなりました。

上記は非常に小さな変更です。

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
    HomeViewController * hvc = [sb instantiateViewControllerWithIdentifier:@"LoginView"]; 
    [hvc setModalPresentationStyle:UIModalPresentationFullScreen]; 
    [self presentViewController:hvc animated:YES completion:nil]; 
+0

ありがとうございました! – Justin

1

この項目で新しくなっています。しかし、最初のビューコントローラがナビゲーションビューコントローラで、そのルートビューコントローラがテーブルビューコントローラである場合セルをクリックしたときにLoginViewControllerのようなビューコントローラーをプッシュしたい場合、ナビゲーションバーを使用してテーブルビューに戻る場合もあります。私はこの方法をお勧めします:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UIViewController *controller = [sb instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
    [self.navigationController pushViewController:controller animated:YES]; 
} 

このようにして、ナビゲーションを行うことができます。

ちなみに、私はこのような問題がなぜ表示されるのかわかりません。私は、loginviewcontrollerがコードで作成されたとき、そのビューはストーリーボードのビューではないと思います。誰かが原因を知っているなら、教えてください!ありがとう!

関連する問題