私は 2 つのcontrollers
1st isself
と 2nd isを持っておりmaincontroller
、ここmaincontroller
でstackを押しているので、戻るボタンが自動的に来ます。
ここでは、ユーザーが戻るボタンを押したときにアラートを出す必要があります。
これどうやってするの?
私は 2 つのcontrollers
1st isself
と 2nd isを持っておりmaincontroller
、ここmaincontroller
でstackを押しているので、戻るボタンが自動的に来ます。
ここでは、ユーザーが戻るボタンを押したときにアラートを出す必要があります。
これどうやってするの?
UINavigationController
または、のデリゲート メソッドを使用できます。このメソッドwillShowViewController
は、VC の戻るボタンが押されたときに呼び出されます。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
最初に使用して戻るボタンを非表示にします
self.navigationItem.hidesBackButton = YES;
次に、独自のカスタム ボタンを作成します。
UIBarButtonItem *backBtn =[[UIBarButtonItem alloc]initWithTitle:@"back" style:UIBarButtonItemStyleDone target:self action:@selector(popAlertAction:)];
self.navigationItem.leftBarButtonItem=backBtn;
[backBtn release];
あなたのセレクターはここにあります:
- (void)popAlertAction:(UIBarButtonItem*)sender
{
//Do ur stuff for pop up
}
最善かつ最も簡単な方法
プレスを検出したいView Controllerにこれを入れてみてください:
-(void) viewWillDisappear:(BOOL)animated {
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
// back button was pressed. We know this is true because self is no longer
// in the navigation stack.
}
[super viewWillDisappear:animated];
}
独自のものを作成し、 のinメソッドUIBarButtonItem
として設定します。leftBarButtonItem
viewDidLoad
mainController
たとえば、(ここではシステム アイテムを使用しましたが、別のアイテムを作成することもできます。詳細については、クラス リファレンスを参照してください)。
UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showAlertView:)];
self.navigationItem.leftBarButtonItem = leftBarButtonItem;
// only if you don't use ARC
// [leftBarButtonItem release];
どこ
- (void)showAlertView:(id)sender
{
// alert view here...
}
アクションを含むカスタムの戻るボタンを追加し、そのアクション メソッドでアラートを設定します。ここからカスタムの戻るボタンを追加できます: http://www.applausible.com/blog/?p=401
viewControllerCount - 以前 UINavigationController にあった viewController の数を保持する var です。次に、viewControllerCount > [viewControllers count]かどうかを確認します。そうであれば、戻ることがわかります (つまり、[戻る] ボタンの模倣)。
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
NSArray *viewControllers = [navigationController viewControllers];
if (viewControllerCount > [viewControllers count])
{
// your code
}
viewControllerCount = [viewControllers count];
}
ボタンを作成し、次のようにボタン アクションを指定します。
[self alert];
アラートが表示されたら、はいをタップした後
[self.navigationController popViewController];
この後、
self.navigationController.LeftBarButton = myButton;
これは役立つかもしれません