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;
这可能有帮助