3

私は次のように設定されたストーリーボードを持っています:

  1. ナビゲーション コントローラー --- 接続先 ---> ビュー A ---> テーブル セル セグエ ---> ビュー B
  2. スタンドアロン ビュー C、つまり、ストーリーボードの他のビューからセグエが接続されていません。

ビュー A のセルをタップすると、ビュー B へのセグエが自動的に実行されます。ビュー B では、ビューが表示されてアプリケーション イベントがトリガーされた後、自動的に閉じられ、ビュー C のインスタンスが次のようにプッシュされます。

ビュー B:

- (void)someEvent
{
    ViewCController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewC"];
    [self.navigationController pushViewController:controller animated:YES];
}

View C が表示されます。ただし、ビュー C のナビゲーション バーの「戻る」ボタンをタップすると、ビュー B ではなくビュー A に戻ります。これを試しました。

ビュー C:

- (void)viewWillDisappear:(BOOL)animated
{
     [super viewWillDisappear:animated];
     [self.navigationController popToRootViewControllerAnimated:animated];
}

これは、ビュー C が閉じられ、ビュー A がビュー B をバイパスして戻ってくるという点で、ほぼ期待どおりに機能します。ビュー A. 正しいボタンを表示するには、[戻る] ボタンをもう一度タップする必要があります。

私は何が欠けていますか?

4

2 に答える 2

1

ビューCで、独自のbarButtonItemを割り当て、それを配置しself.navigationItem.leftBarButtonItemて戻るボタンを置き換え、このボタンのアクションを実行させます[self.navigationController popToRootViewControllerAnimated:YES]

于 2013-01-29T20:57:35.587 に答える
1

あなたがこれを行うことができるかどうか、またはこれを行う必要があるかどうかはわかりません。戻るボタンには特定の目的があります-前のView Controllerに戻るためです。それを覆そうとするべきではないと思います(そのタイトルは、最初のものではなく、そのものを指すようになります)。viewC のナビゲーション バーに別のバー ボタンを追加し、それを popToRootViewController を実行するコードに接続することをお勧めします。

于 2013-01-29T20:38:51.337 に答える