IOSアプリのストーリーボードに複数のUIViewControllersがあります。別のUIViewControllerから(ストーリーボード内の)UIViewControllersの1つを開きます。
以下のコードを試してみましたが、iOS 5より前に使用していて正常に機能しましたが、機能しません。
- (IBAction)addNotes:(id)sender {
NotesViewController *notesView = [[NotesViewController alloc] initWithNibName:@"NotesViewController" bundle:nil];
[self presentModalViewController:notesView animated:YES];
}
IOS 5ストーリーボードでこのアクションを実行するにはどうすればよいですか?
ストーリーボードがあると仮定して、ストーリーボードに移動し、VCに識別子(インスペクター)を指定して、次のようにします。
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"IDENTIFIER"];
[self.navigationController pushViewController:vc animated:YES];
実行したいxibファイルがあると仮定します。
UIViewController *vc = [[UIViewController alloc] initWithNibName:@"NIBNAME" bundle:nil];
[self.navigationController pushViewController:vc animated:YES];
Xibファイルなし:
UIViewController *vc = [[UIViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
以下はSwift 3.0以降で機能します
StoryBoard
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let mainViewController = storyBoard.instantiateViewController(withIdentifier: "Identifier")
self.navigationController?.pushViewController(mainViewController, animated: true)
.xib
let viewController = UIViewController(nibName: "NibName", bundle: nil)
self.navigationController?.pushViewController(viewController, animated: true)
.xibなし
let viewController = UIViewController()
self.navigationController?.pushViewController(viewController, animated: true)
Swift 3.1バージョンで更新
もししていないナビゲーションコントローラーを埋め込むなら
let storyBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController2 = storyBoard.instantiateViewController(withIdentifier: "ViewController2")
self.present(viewController2, animated: true, completion: nil)
そして、もしあなたがhadナビゲーションコントローラーを埋め込むなら
let storyBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let viewController2 = storyBoard.instantiateViewController(withIdentifier: "ViewController2")
self.navigationController?.pushViewController(viewController2, animated: true)
Swift 4.2モーダルでナビゲーションなしでこの回答を求めている人のための4.2回答およびSwift更新バージョン。
let storyboard = UIStoryboard(name: "YourStoryboardName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "mainViewController")
self.present(controller, animated: true, completion: nil)
UIViewController *initialHelpView = [[UIStoryboard storyboardWithName:@"StoryBoard_IDentifier" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController_Identifier"];
[self presentViewController:initialHelpView animated:YES completion:nil];
Swift 5
let vc = self.storyboard!.instantiateViewController(withIdentifier: "ControllerIdentifier")
self.present(vc, animated: true, completion: nil)