0

次のコードがあります。

- (IBAction)buttonPressed:(UIButton *)sender
{
    //sentder.titleLabel
    NSString *label = [(UIButton *)sender currentTitle];

    if ([label isEqualToString:@"Register"])
    {
        [sender setTitle:@"Registers" forState:UIControlStateNormal];

        RegisterViewController *viewCon = [[RegisterViewController alloc] init];
        RegisterNavigationController *navigation = [[RegisterNavigationController alloc] init];
    [navigation pushViewController:viewCon animated:YES];

        //self performSegueWithIdentifier:@"MySequeIdentifier" sender:];
    }
....

正しく呼び出される次のボタン コードを含む startController があります。新しいデフォルトの registerViewController (UIViewController) と registerNavigationContoller (UINavigationController クラス) を作成しました。ボタンをクリックして registerViewController にアニメーション化し、そのビュー コントローラに戻るボタン付きのバーを持たせるにはどうすればよいですか?

私はこれを間違っていますか? startViewController は単なる UIViewController であるため、UINavigationController であるはずですか? もしそうなら、どうすればこのページのトップバーを取り除くことができますか?

4

1 に答える 1

1

既存の View Controller (このボタン コードを含むもの) は、Navigation Controller 内に含める必要があります。新しい VC も同じ Nav コントローラーに含まれます。Nav コントローラーは、これら 2 つの子ビュー コントローラー間のタイトル バーと戻るボタンのナビゲーションを管理します。

最初の VC を Nav コントローラーに埋め込むには:

  • ストーリーボードを使用している場合は、View Controller シーンを選択してからメニューで選択できます。 Editor > Embed In > Navigation Controller

  • コードでインスタンス化する場合は、最初に View Controller を初期化し、次のように新しい nav コントローラーに埋め込みます。

    UIViewController firstVC;
    firstVC = [[UIViewController alloc] initWithNib:@"nibname" bundle:nil]]   
        //(example of initialising with a xib/nib file)
    UINavigationCOntroller navCon;
    navCon = [UINavigationController alloc] initWithRootViewController:firstVC];
    

    navController

次に、ボタン コードから、親ナビゲーション コントローラーにトランジションを管理するように依頼します。

 RegisterViewController *viewCon = [[RegisterViewController alloc] init];  
    //take care to initialise correctly
    //do you have a nib file? a storyboard scene?
[self.navigationController pushViewController:viewCon animated:YES];

別の方法として、ボタンと 2 番目のストーリーボード シーンの間にストーリーボード プッシュ セグエを作成することもできます。これは、このコードと同じ機能を実行します。

最初の VC ではなく 2 番目の VC にのみナビゲーション バーが必要な場合は、さまざまなオプションがあります。

各ビュー コントローラーを使用して、ナビゲーション コントローラーの BOOL プロパティを個別に制御できnavigationBarHiddenます self.navigationController.navigationBarHidden = YES

ただし、ナビゲーション バーの状態間の視覚的な遷移が不十分であると感じる場合があり、別のアプリ デザインを検討する必要がある場合があります。たとえば、最初の View Controller から 2 番目の View Controller を提示できます。この場合、どちらの VC もナビゲーション コントローラーを必要としません (2 番目の VC には、代わりに独自の UINavigationBar を含めることができます)。または、表示されたビュー コントローラーを独自のナビゲーション コントローラーに埋め込むこともできます。どちらの方法でも、最初のビュー コントローラーへの自動戻るボタンは取得されず、独自の実装が必要になります (戻るボタンは、1 つのナビゲーション コントローラーが子ビュー コントローラーの配列を管理している場合にのみ提供されます)。

これらはいくつかの提案にすぎません。これらのアイデアやその他のアイデアを試して、アプリに最も適したものを見つけ出す必要があります。

于 2013-09-13T08:32:21.457 に答える