2

ストーリーボードにこのデザインがあります。

ここに画像の説明を入力してください

ご覧のとおり、中央のViewControllerはナビゲーションコントローラーに接続されています(ナビゲーションバーを非表示にしました)。この中央のページでは、すべてのコントロールをプログラムで追加します(Parseモバイルプラットフォームログインウィザードを使用)。

ログインが正常に完了したら、3番目のページに移動したいと思います。

- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user {
    [self dismissModalViewControllerAnimated:YES];
    ViewController2 *viewController = [[[ViewController2 alloc] init] autorelease];
    [self.navigationController pushViewController:viewController animated:YES];
    printf("%s", [@"Ali" UTF8String]);
}

メッセージは印刷されますが、ナビゲーションは失敗します。手伝ってくれますか?ストーリーボードで何かを修正する必要があるかもしれません。

4

4 に答える 4

2

dismissModalViewControllerAnimated:メッセージを送信する必要があるかどうかわかりません。ログインViewControllerの上に別のViewControllerをモーダルで表示していますか?

とにかく、ストーリーボードでView Controllerを構成した場合、とを使用してViewControllerを作成することはできませallocinit。ストーリーボードに作成を依頼する必要があります。これを行うにはいくつかの方法があります。

一方通行

ストーリーボードを作成する1つの方法は、ストーリーボードにViewController2プッシュセグエを作成することです。

  1. ストーリーボードを開きます。
  2. Controlキーを押しながらログインビューコントローラからにドラッグしますViewController2
  3. 「プッシュ」セグエタイプを選択します。
  4. セグエをクリックします。
  5. 「表示」>「ユーティリティ」>「属性インスペクターの表示」を選択します。
  6. 属性インスペクター(ウィンドウの右側)で、セグエ識別子を「didLogIn」に設定します。

セグエを実行するには、次のようにします。

- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user {
    [self dismissModalViewControllerAnimated:YES];
    [self performSegueWithIdentifier:@"didLogIn" sender:self];
}

別の方法

ストーリーボードを作成するもう1つの方法はViewController2、ストーリーボードIDを指定し、ストーリーボードにIDでViewControllerをインスタンス化するように依頼することです。次に、ViewControllerをプッシュできます。

ViewController2ストーリーボードに作成を依頼する前に、ストーリーボード内のインスタンスに「ストーリーボードID」を指定する必要があります。

  1. ストーリーボードを開きます。
  2. インスタンスを選択しViewController2ます。
  3. 「表示」>「ユーティリティ」>「IDインスペクターの表示」を選択します。
  4. Identity Inspector(ウィンドウの右側)に「viewController2」と入力します。ケースは重要です!

次に、コードでストーリーボードにインスタンス化を依頼しますviewController2

- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user {
    [self dismissModalViewControllerAnimated:YES]; // Should this be here?
    ViewController2 *viewController = [[[ViewController2 alloc] init] autorelease];
    [self.navigationController pushViewController:viewController animated:YES];
}
于 2012-10-11T03:27:22.080 に答える
1

この方法を試してください、

 ViewController2 *myViewController=[storyboard instantiateViewControllerWithIdentifier:@"TheNameOfYourController"]
    [self.navigationController pushViewController:myViewController animated:YES];
于 2012-10-10T20:00:14.663 に答える
0

関連するコード/設定の多くが欠落しているため、次のことをお勧めします。

  1. このコードを使用します:

    -(void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user {
     [self dismissViewControllerAnimated:YES completion:NULL];
    
     Class klass = [[NSBundle mainBundle] classNamed:@"ViewController2"];
     ViewController2 *viewController = [[klass alloc] init];
     [self.navigationController pushViewController:viewController animated:YES];
     [viewController release];
    
     NSLog("%@", @"Ali");
     }
    
  2. それでも問題が解決しない場合は、ViewController2を初期化する方法を確認してください。

これでも問題が解決しない場合は、より関連性の高いコードを投稿してみてください。

于 2012-10-10T19:59:19.510 に答える
0

ストーリーボード識別子を使用して次のviewControllerを移動するには

nextViewController *objnextViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"nextViewControllerIdentifier"];

[self.navigationController pushViewController: objnextViewController animated:YES];
于 2016-06-30T09:19:15.750 に答える