0

ロード時にタブベースのアプリをロードして、すべてのタブが正常に機能するアプリがあります。ただし、最初のタブでは、読み込まれたビューにはたくさんのボタンがあります。これらのボタンのメソッドを作成したので、押すと新しいサブビュー (.xib) がプッシュされ、これは正常に機能します。

ただし、これらの新しいサブビューでは、独自のメソッドを持つ戻るボタンがあります。このボタンでビューを削除し、元のビューに戻します。これが FirstViewController.m のコードです。

このファイルは、さまざまな .xib ファイルを処理しますが、すべてのコードを保持していることに注意してください。基本的に FirstView を最初にプッシュし、次にボタンを押すとE87view.xib.xib のコードはまだ firstviewcontroller ファイル内にあります。

-(IBAction) backButtonPressed {
    [self showAll];
    backButton.hidden = 1;

    for (UIView *subview in [self.view subviews]) {
        [subview removeFromSuperview];
    }
    [self showAll];
}

-(IBAction) E87Pressed {
    //[self hideAll];

    E87view *e87view = [[E87view alloc] initWithNibName:@"E87view" bundle:[NSBundle mainBundle]];

    [self.navigationController pushViewController:e87view animated:YES];
    [self.view addSubview:e87view.view];
}

繰り返しになりますが、ロードされた最初のビューでボタン E87FirstView.xibを押すと、新しいビューがプッシュされますE87view.xib。ただし、新しくロードされたこれで戻るボタンを押すE87viewと、上記の機能にアクセスしてビューが削除されますが、FirstView.xib基本的に空のアプリが残るため、すべての設定が削除されます。

これが理にかなっていることを願っています。

よろしく、

ルイス

4

2 に答える 2

2

個々のサブビューをすべて削除する代わりに、ViewController をナビゲーション コントローラーから削除するだけです。

[self.navigationController popViewControllerAnimated: YES];

そして、この行は不要です

[self.view addSubview:e87view.view];
于 2012-07-22T16:03:52.680 に答える
0

あなたのコードを見ると、何かが私を混乱させます:

1)ビュー コントローラを画面にプッシュした、viewController e87view のサブビューを再びメイン ビューに追加するのはなぜですか? viewController e87view をプッシュすると、すべてが処理されます。viewController が navigationController スタックに追加され、その viewController のビューも表示される必要があります。

そう呼ぶ

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

[self.view addSubview:e87view.view];

ビューを画面に 2 回追加します。

2) 戻るために独自のコードを書いているのはなぜですか? これは実行できますが..それが本当にやりたいことですか? 通常、viewController e87view を navigationController にプッシュした後、viewController e87viewにtitleがある場合、戻るボタンが自動的に表示されます。

于 2012-07-22T17:23:35.890 に答える