web-dev-qa-db-ja.com

新しいViewControllerをStoryboardにリンクしますか?

おそらく簡単な解決策がありますが、私はそれを理解できません。

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

私はTab Bar Controllerから始めますが、ユーザーがアプリの使用を許可される前に、ユーザーは、開始時にモーダルにプッシュされるloginviewを介して自分自身を認証する必要があります。

同じストーリーボードでloginviewを構成したいのですが、ストーリーボードのView Controllerとコードをリンクする方法を理解することはできません。

私がやったこと:

  • 新しいUIViewControllerサブクラストラフファイル>新規>新規ファイルを作成します。
  • ストーリーボードに新しいUIViewControllerをドラッグします
  • カスタムクラスタブでクラスを設定する
  • テスト目的でUILabelをドラッグします。
  • 走る

ラベルなし...

28
Justin

ログインビューコントローラとして機能する新しいUIViewControllerをMainStoryboardにプルします。属性インスペクターで、識別子をLoginViewController(または適切なもの)に変更します。それから加えて

- (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];
}

最初のView Controllerにログインすると、ストーリーボードからログイン画面がロードされて表示されます。

お役に立てれば。

40
Scott Sherwood

上記の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]; 
6
OSXMonk

私はこの分野に新しいです。ただし、最初のView ControllerがNavigation View Controllerであり、そのrootviewcontrollerがTable View Controllerである場合。セルをクリックしたときにLoginViewControllerのようなView Controllerをプッシュし、ナビゲーションバーを使用してTable Viewに戻る場合。私はこの方法をお勧めします:

-(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がコードで作成されたとき、そのビューはストーリーボードのビューではありません。誰かが原因を知っているなら、教えてください!ありがとう!

1