しばらくこれに苦労してきましたが、直接的な答えを得ることができないようです。
どんな助けも大歓迎です!
Navigation Controllerを使用している場合:
ViewController *viewController = [[ViewController alloc] init];
[self.navigationController pushViewController:viewController animated:YES];
または、新しいビューを表示するだけの場合:
ViewController *viewController = [[ViewController alloc] init];
[self presentViewController:viewController animated:YES completion:nil];
同じストーリーボードに新しいビューを表示したい場合は、
CurrentViewController.mで、
#import "YourViewController.h"
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
YourViewController *viewController = (YourViewController *)[storyboard instantiateViewControllerWithIdentifier:@"YourViewControllerIdentifier"];
[self presentViewController:viewController animated:YES completion:nil];
View Controllerに識別子を設定するには、MainStoryBoard.storyboardを開きます。 YourViewController View-> Utilities-> ShowIdentityInspectorを選択します。そこで識別子を指定できます。
Swiftバージョン:
Navigation Controllerを使用している場合:
let viewController: ViewController = self.storyboard?.instantiateViewControllerWithIdentifier("VC") as ViewController
self.navigationController?.pushViewController(viewController, animated: true)
または、新しいビューを表示するだけの場合:
let viewController: ViewController = self.storyboard?.instantiateViewControllerWithIdentifier("VC") as ViewController
self.presentViewController(viewController, animated: true, completion: nil)
instantiateViewControllerWithIdentifier
はStoryboard ID
。
NextViewController *NVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NextViewController"];
[self presentViewController:NVC animated:YES completion:nil];
CmdSftによって以前の回答コードで呼び出されたViewcontrollerを閉じるには
ViewController *viewController = [[ViewController alloc] init];
[self presentViewController:viewController animated:YES completion:nil];
使用できます
[self dismissViewControllerAnimated:YES completion: nil];
Swift 3.0バージョン
新しいコントローラーを提示する場合。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "controllerIdentifier") as! YourController
self.present(viewController, animated: true, completion: nil)
また、別のコントローラーにプッシュする場合(ナビゲーションにある場合)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "controllerIdentifier") as! YourController
self.navigationController?.pushViewController(viewController, animated: true)
#import "YourViewController.h"
ナビゲーションバーやタブバーを含むビューをプッシュするには:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboard" bundle:nil];
YourViewController *viewController = (YourViewcontroller *)[storyboard instantiateViewControllerWithIdentifier:@"YourViewControllerIdentifier"];
[self.navigationController pushViewController:viewController animated:YES];
View Controllerに識別子を設定するには、YourStoryboard.storyboardを開きます。 YourViewController View-> Utilities-> ShowIdentityInspectorを選択します。そこで識別子を指定できます。
これは私のために働いた:
NSTimer *switchTo = [NSTimer scheduledTimerWithTimeInterval:0.1
target:selfselector:@selector(switchToTimer)userInfo:nil repeats:NO];
- (void) switchToTimer {
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"MyViewControllerID"]; // Storyboard ID
[self presentViewController:vc animated:FALSE completion:nil];
}
[self.navigationController pushViewController:someViewController animated:YES];
Swift 3.0 in
1つのView ControllerからSecondViewControllerへ:
let loginVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "MsgViewController") as! MsgViewController
self.navigationController?.pushViewController(loginVC, animated: true)
2番目のviewcontrollerから1stviewcontroller(back)for:アクションイベントの戻るボタン:-
self.navigationController?.popViewController(animated:true)
3番目のviewcontrollerから1番目のviewcontrollerへのジャンプ
self.navigationController?.popToRootViewController(animated:true)
ナビゲーションバーで最も重要なストーリーボードのクリックが解除されていることを確認してください。
OPは、viewCONTROLLERを変更せずにVIEWを交換する方法を求めていると思います。彼の質問を誤解していますか?
擬似コードでは、彼は何をしたいのですか?
let myController = instantiate(someParentController)
let view1 = Bundle.main.loadNib(....)as ... blah myController.setThisViewTo(view1)
let view2 = Bundle.main.loadNib(....)as ... blah myController.setThisViewTo(view2)
彼の質問は間違っていますか?