web-dev-qa-db-ja.com

iOS-コードとストーリーボードからviewControllerをプッシュする

私はこのコードを持っています

 PlaceViewController *newView = [self.storyboard instantiateViewControllerWithIdentifier:@"PlaceView"];
 [self presentViewController:newView animated:YES completion:nil];

ビューを変更することはできますが、このページに戻ったときにこのビューをプッシュすると、状態が保持されます。

私はこのコードを入れようとします:

[self.navigationController pushViewController:newView animated:YES];

しかし、何もしません。

ありがとう

11
Xose

Objective-C:

PlaceViewController *newView = [self.storyboard instantiateViewControllerWithIdentifier:@"storyBoardIdentifier"];
[self.navigationController pushViewController:newView animated:YES];

以下の点に注意してください、

  1. ストーリーボード識別子は正しいです。

  2. ルートビューには、ナビゲーションコントローラーがあります。

Swift:

let newView = self.storyboard?.instantiateViewController(withIdentifier: "storyBoardIdentifier") as! PlaceViewController
self.navigationController?.pushViewController(newView, animated: true)
39
Vineesh TP

使用する:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"STORYBOARD_NAME" bundle:nil];
PlaceViewController *newView = [storyboard instantiateViewControllerWithIdentifier:@"PlaceView"];
[self presentViewController:newView animated:YES completion:nil];

または:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"STORYBOARD_NAME" bundle:nil];
PlaceViewController *newView = [storyboard instantiateViewControllerWithIdentifier:@"PlaceView"];
[self.navigationController pushViewController:newView animated:YES];
5
Alino

ストーリーボードの場合は、performSegueWithIdentifierを次のように使用する必要があります。

 [self performSegueWithIdentifier:@"identifier goes here" sender:self];
5
Sumanth

Swift 3.x

let viewController = storyboard?.instantiateViewController(withIdentifier: "storyboardIdentifier") as! UIViewController
navigationController?.pushViewController(viewController, animated: true)
2
footyapps27

デフォルトでは、Xcodeは標準のビューコントローラを作成します。まず、ビューコントローラーをナビゲーションコントローラーに変更します。メニューで「エディター」を選択し、「組み込み」を選択してから、「ナビゲーションコントローラー」を選択します。ステップ1.メインストーリーボードを選択します。ステップ2. Xcodeアプリケーションの上部にある「エディター」をクリックします。ステップ3. [埋め込み]をクリックします

Xcodeは、View ControllerとNavigation Controllerを自動的に埋め込みます。