画面に多くのタブがありますが、「変更を保存しますか?」という警告ボックスを表示したいです。ユーザーがページにある保存ボタンをクリックせずにページ内の何かを変更した場合、ユーザーは差分タブをクリックしています。アラートビューを取得できますが、タブをクリックすると、クリックされたタブに画面が移動します。アラート ビューに応答するまで、画面は変更されません。
アラートビューが応答されるまで画面の変更を抑制する方法を誰か教えてもらえますか?
画面に多くのタブがありますが、「変更を保存しますか?」という警告ボックスを表示したいです。ユーザーがページにある保存ボタンをクリックせずにページ内の何かを変更した場合、ユーザーは差分タブをクリックしています。アラートビューを取得できますが、タブをクリックすると、クリックされたタブに画面が移動します。アラート ビューに応答するまで、画面は変更されません。
アラートビューが応答されるまで画面の変更を抑制する方法を誰か教えてもらえますか?
これはあなたの質問に直接答えるものではありませんが、あなたがやろうとしていることは悪いUIデザインのように聞こえます. (一般に、UIKit と戦っているように感じる場合は、おそらく間違ったやり方をしている可能性があります。)
この場合: ユーザーが別の画面に移動する前に [保存] ボタンをタップすることを本当に確認したい場合は、その画面をモーダル ビューで表示して、アプリの他の部分に移動できないようにする必要があります。
つまり、ユーザーが画面から移動できないようにする場合は、移動を許可するボタンやタブをユーザーに表示しないでください。そうしないと、自分の仕事が増えるだけで、ユーザーを苛立たせることになります。
UITabBarControllerDelegate
アプリのデリゲートに実装するapplicationDidFinishLaunching
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
self.tabBarController.delegate = self;
[window addSubview:self.tabBarController.view];
}
次に、以下のデリゲート メソッドを使用します。
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;
このメソッドは、タブ スイッチの前に呼び出されます。ここで no を返すと、タブ スイッチが無効になり、代わりに警告メッセージが表示されます。ユーザーが保存を実行したら、タブをもう一度押すか、次のようにプログラムで新しいタブに切り替えることができます。
self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:0];
これをデリゲート内に追加し、
プログラムでタブに切り替えるにはこれはどうですか、
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
if () {
//some code
} else {
//some other code
self.tabBarController.selectedViewController = viewController;
}
}