web-dev-qa-db-ja.com

View Controllerでプログラムでビューを切り替えるにはどうすればよいですか? (Xcode、iPhone)

しばらくこれに苦労してきましたが、直接的な答えを得ることができないようです。

どんな助けも大歓迎です!

44
mishajw126

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];
87
SlateEntropy

同じストーリーボードに新しいビューを表示したい場合は、

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を選択します。そこで識別子を指定できます。

33
sree_achu

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)
18
King-Wizard

instantiateViewControllerWithIdentifierStoryboard ID

NextViewController *NVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NextViewController"];
[self presentViewController:NVC animated:YES completion:nil];
17
Lukas Wiklund

CmdSftによって以前の回答コードで呼び出されたViewcontrollerを閉じるには

    ViewController *viewController = [[ViewController alloc] init];    
    [self presentViewController:viewController animated:YES completion:nil];

使用できます

    [self dismissViewControllerAnimated:YES completion: nil];
5
BlueAMG63

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)
4
Sahil
#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を選択します。そこで識別子を指定できます。

3
NimzApps

これは私のために働いた:

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];
}
2
Walter Schurter
[self.navigationController pushViewController:someViewController animated:YES];
1
StuR

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)

ナビゲーションバーで最も重要なストーリーボードのクリックが解除されていることを確認してください。

1
ronak patel

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)

彼の質問は間違っていますか?

0
ChrisH