presentViewController:animated:completion:
メソッドを使用して、別のView Controllerにアクセスしています。
これは私のコードです:
AddTaskViewController *add = [[AddTaskViewController alloc] init];
[self presentViewController:add animated:YES completion:nil];
このコードは他のUIViewController
に送られますが、他のコントローラーは空です。私はいつも絵コンテを使ってきましたが、今ではコードでこれを行う必要があります。
ストーリーボードを使用している場合、おそらくalloc
とinit
を使用して新しいView Controllerを作成するべきではありません。代わりに、ストーリーボードを見て、実行したいセグエを見つけてください。一意の識別子を持つ必要があります(そうでない場合は、右側のサイドバーで設定できます)。
そのセグエの識別子を見つけたら、current View Controllerに-performSegueWithIdentifier:sender
メッセージを送信します。
[self performSegueWithIdentifier:@"mySegueIdentifier" sender:self];
これにより、ストーリーボードがAddTaskViewControllerをインスタンス化し、そのセグエに対して定義した方法で表示します。
一方、ストーリーボードをまったく使用していない場合は、AddTaskViewControllerに何らかのユーザーインターフェイスを提供する必要があります。最も一般的な方法は、nibを使用してコントローラーを初期化することです。init
を呼び出す代わりに、-initWithNibName:bundle:
を呼び出し、add-を含む.xibファイルの名前を指定します。タスクUI:
AddTaskViewController *add = [[AddTaskViewController alloc]
initWithNibName:@"AddTaskView" bundle:nil];
[self presentViewController:add animated:YES completion:nil];
(新しいView Controllerに関連付けられたビューを取得する他の(あまり一般的ではない)方法がありますが、これはおそらく、作業するのに最も手間がかからないでしょう。)
ストーリーボードを使用していて、「add」viewControllerがストーリーボードにある場合、設定で「add」viewcontrollerの識別子を設定すると、次のようなことができます。
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"NameOfYourStoryBoard"
bundle:nil];
AddTaskViewController *add =
[storyboard instantiateViewControllerWithIdentifier:@"viewControllerIdentifier"];
[self presentViewController:add
animated:YES
completion:nil];
ストーリーボードまたはnibファイルに「追加」viewControllerがなく、プログラム全体を作成したい場合、appDocsは次のように言います。
ストーリーボードまたはnibファイルでビューを定義できない場合、loadViewメソッドをオーバーライドして、ビュー階層を手動でインスタンス化し、ビュープロパティに割り当てます。
ストーリーボードIDインスペクターからストーリーボードIDを設定する必要があります
AddTaskViewController *add=[self.storyboard instantiateViewControllerWithIdentifier:@"storyboard_id"];
[self presentViewController:add animated:YES completion:nil];
あなたのコード:
AddTaskViewController *add = [[AddTaskViewController alloc] init];
[self presentViewController:add animated:YES completion:nil];
このコードは他のコントローラーに行くことができますが、ストーリーボードのコントローラーではなく、新しいviewControllerを取得します。次のようにします。
AddTaskViewController *add = [self.storyboard instantiateViewControllerWithIdentifier:@"YourStoryboardID"];
[self presentViewController:add animated:YES completion:nil];
最善の方法は
AddTaskViewController * add = [self.storyboard instantiateViewControllerWithIdentifier:@"addID"];
[self presentViewController:add animated:YES completion:nil];
このコードを試してください:
[self.navigationController presentViewController:controller animated:YES completion:nil];
以下を試してください:
NextViewController *nextView = [self.storyboard instantiateViewControllerWithIdentifier:@"nextView"];
[self presentViewController:nextView animated:YES completion:NULL];
Swiftでこれを行う方法は次のとおりです。
let vc = UIViewController()
self.presentViewController(vc, animated: true, completion: nil)