おそらく簡単な解決策がありますが、私はそれを理解できません。
インターフェイスにストーリーボードを使用しています。
私はTab Bar Controllerから始めますが、ユーザーがアプリの使用を許可される前に、ユーザーは、開始時にモーダルにプッシュされるloginviewを介して自分自身を認証する必要があります。
同じストーリーボードでloginviewを構成したいのですが、ストーリーボードのView Controllerとコードをリンクする方法を理解することはできません。
私がやったこと:
ラベルなし...
ログインビューコントローラとして機能する新しい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にログインすると、ストーリーボードからログイン画面がロードされて表示されます。
お役に立てれば。
上記の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];
私はこの分野に新しいです。ただし、最初の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がコードで作成されたとき、そのビューはストーリーボードのビューではありません。誰かが原因を知っているなら、教えてください!ありがとう!