4

テーブルビューセルをプッシュして、別のビューコントローラからviewControllerを起動しています。2番目のViewControllerには、主にテストフィールドのコントロールがたくさんあります。2番目のViewControllerにあるデフォルトの戻るボタンを使用して、最初のView Controllerのタイトルになり、デフォルトと言ったように覚えておきたいので、戻るための独自のボタンを作成したくありません。 2番目のViewControllerで。したがって、2番目のView Controllerが終了しているか消えているか、または消えるかどうかを検出し、特定の条件に基づいて、元の呼び出し元のViewControllerに戻るのを停止します。私はもともとそれがここでできると思っていました:

-(void) viewWillDisappear:(BOOL)animated {
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) 
    {
        // So back button was pressed on the second view controller, so how do I stop it
        // here from going back to the original view controller. 
    }
}

またはどうすればよいですか?ビューコントローラの戻り型BOOLメソッドを呼び出して停止することができないようです。

ありがとう。

4

4 に答える 4

8

メソッドはviewShouldDisappearではなくviewWillDisappearと呼ばれるため、Appleはその時点でビューが消えるのを止めることはできません。そして、ユーザーの観点からは、戻るボタンを押すと、実際にユーザーを元に戻す必要があります。代わりに、許可されていない状況で戻るボタンを非表示にすることを検討してください。

于 2012-08-10T05:33:59.617 に答える
1

ビューコントローラが閉じるのを防ぐことはできませんが、エミュレートすることはできます。

この行は、閉じるボタンを自家製の関数を呼び出すボタンに置​​き換えます

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(closeBtn)];

したがって、必要に応じてビューを閉じることができます。

- (void) closeBtn
{
    bool shouldClose=true;
    // Your conditions here
    if (shouldClose) [self dismissViewControllerAnimated:YES completion:nil];
}
于 2015-03-23T13:28:51.933 に答える
0

申し訳ありませんが、私は英語が苦手なので、長いテキストを読むのは少し難しいです。ボタンなしで戻りたいと思うことしかできません。私はnavigationControllerに前のビューに戻るメソッドがあることを知っています。

于 2012-08-10T05:35:55.777 に答える
0

カスタムの戻るボタンを作成し、[self.navigationItem.hidesBackButton=YES ターゲットをカスタムの戻るボタンに追加]を使用して、好きなように使用します。ビューを移動する場合は、を使用できます[self.navigationController popViewcontroller]

于 2012-08-10T05:57:02.750 に答える