UINavigationController的和后退按钮动作(UINavigationControl

2019-07-18 01:29发布

我有一个2个controllers 1日是self和2是maincontroller ,在那里我推maincontroller堆栈中 ,所以后退按钮会自动到来。

在这里,我需要当用户按下后退按钮进行报警。

我怎样才能做到这一点?

Answer 1:

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

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


Answer 2:

首先通过使用隐藏后退按钮

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
}


Answer 3:

最好和最简单的方法

尝试把这个到您要检测的按视图控制器:

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


Answer 4:

创建您自己UIBarButtonItem并将其设置为leftBarButtonItemviewDidLoad的方法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...
}


Answer 5:

添加自定义后退按钮与动作,并设置在行动快讯method.You从这里可以添加自定义后退按钮: http://www.applausible.com/blog/?p=401



Answer 6:

viewControllerCount -是保存viewControllers数量以前是在UINavigationController的VaR值。 然后,我们检查,如果viewControllerCount> [viewControllers计数]如果是这样,我们知道我们会回来(即后退按钮仿)。

- (void)navigationController:(UINavigationController *)navigationController
      willShowViewController:(UIViewController *)viewController
                    animated:(BOOL)animated
{
    NSArray *viewControllers = [navigationController viewControllers];

    if (viewControllerCount > [viewControllers count])
    {
        // your code
    }

    viewControllerCount = [viewControllers count];
}


Answer 7:

创建一个按钮,并给该按钮的动作如下。

[self alert];

而当显示警报,攻丝结束后是

[self.navigationController popViewController];

在这之后,

self.navigationController.LeftBarButton = myButton;

这可能有助于



文章来源: UINavigationController and back button action