UINavigationController和后退按钮动作

时间:2013-01-10 10:45:40

标签: ios objective-c uinavigationcontroller

我有两个controllers第一个是self,第二个是maincontroller,我在堆栈中推送maincontroller,所以后退按钮自动进入。

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

我该怎么做?

7 个答案:

答案 0 :(得分:20)

或者您可以使用UINavigationController的委托方法。按下VC的后退按钮时会调用方法willShowViewController

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

答案 1 :(得分:8)

首先使用

隐藏后退按钮
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
}

答案 2 :(得分:7)

最简单方法

尝试将其放入要检测印刷机的视图控制器中:

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

答案 3 :(得分:2)

创建您自己的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...
}

,其中

{{1}}

答案 4 :(得分:0)

添加带有操作的自定义后退按钮,并在该操作方法中设置提醒。您可以从此处添加自定义后退按钮:http://www.applausible.com/blog/?p=401

答案 5 :(得分:0)

viewControllerCount - 是包含以前在UINavigationController中的viewControllers数量的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];
}

答案 6 :(得分:-1)

创建一个按钮并按如下方式给出按钮操作。

[self alert];

当显示警报时,点击是

[self.navigationController popViewController];

之后,

self.navigationController.LeftBarButton = myButton;

这可能会有所帮助