UINavigationController和后退button操作

我有一个两个controllers第一个是self和第二个是maincontroller ,我在堆栈中的 maincontroller ,所以后退button自动到来。

这里我需要在用户按下后退button时发出警报。

我怎样才能做到这一点?

或者你可以使用UINavigationController的委托方法。 当VC的后退button被按下时,方法willShowViewController被调用。

 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 

首先使用隐藏后退button

 self.navigationItem.hidesBackButton = YES; 

然后创build您自己的自定义button:

 UIBarButtonItem *backBtn =[[UIBarButtonItem alloc]initWithTitle:@"back" style:UIBarButtonItemStyleDone target:self action:@selector(popAlertAction:)]; self.navigationItem.leftBarButtonItem=backBtn; [backBtn release]; 

你的select器在这里:

 - (void)popAlertAction:(UIBarButtonItem*)sender { //Do ur stuff for pop up } 

最好和最简单的方法

尝试把它放到视图控制器中你想要检测的新闻:

 -(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]; } 

创build自己的UIBarButtonItem并将其设置为mainController viewDidLoad方法中的leftBarButtonItem

例如(在这里我使用了一个系统项目,但是你也可以创build一个不同的细节,详见类参考)。

 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... } 

添加一个自定义后退button,并在该操作方法中设置警报。您可以从这里添加自定义后退button: http : //www.applausible.com/blog/? p=401

viewControllerCount – 是保存了以前在UINavigationController中的viewController的数量的var。 然后,我们检查是否viewControllerCount> [viewControllers count]如果是的话,我们知道我们会回来(即后退button模仿)。

 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { NSArray *viewControllers = [navigationController viewControllers]; if (viewControllerCount > [viewControllers count]) { // your code } viewControllerCount = [viewControllers count]; } 

创build一个button并按下面的button操作。

 [self alert]; 

并显示警报时,点击是后

 [self.navigationController popViewController]; 

在这之后,

 self.navigationController.LeftBarButton = myButton; 

这可能有帮助