iPhone应用程序中的导航后退按钮项目事件

Leo*_*Leo 2 iphone uinavigationbar

我正在开发一个iPhone应用程序.应用程序顶部有一个导航栏.我有两个视图说"View1"和"View2".当您按下"View2"视图控制器时,导航栏会显示一个标题为"View1"的后退按钮,以便您可以返回到view1.

现在我的问题是当你点击那个按钮时会触发哪个事件?还可以在导航栏中更改后退按钮的文本吗?

任何帮助将不胜感激?

谢谢

Ed *_*rty 5

没有特定的事件你只能获得该后退按钮.您可以使用各种viewWillAppear:,viewWillDisappear:等方法,而不是.例如:

//In View2:
- (void) viewWillDisappear:(BOOL) animated {
    [super viewWillDisappear:animated];
    if (!goingToSubscreen) {
        //Do something important here
    }
    goingToSubscreen = NO;
}

//In View1:
- (void) viewWillAppear:(BOOL) animated {
    [super viewWillAppear:animated];
    if (wentToSubscreen) {
        //Do something important here
    }
    wentToSubscreen = NO;
}
Run Code Online (Sandbox Code Playgroud)

请注意,booleans goToSubscreen和goingToSubscreen应设置为named.如果要将另一个视图推送到View2顶部的导航控制器上,则应将goToSubscreen设置为YES,以便它不会执行重要操作.相反,在推送View2之后,你应该在View1上将goToSubscreen设置为YES,这样当它再次出现时,它会在从该屏幕返回后发生一些有趣的事情,而不是在最初出现View1时.

编辑: 从iOS 5.0开始,我相信有内置属性. isBeingDismissed设置为YES在您按下后退按钮期间viewWillDisappear:viewDidDisappear:之后.作为参考,您可以检查的属性是:

isMovingFromParentViewController
isMovingToParentViewController
isBeingPresented
isBeingDismissed
Run Code Online (Sandbox Code Playgroud)

至于更改后退按钮的标题,该属性属于上一个视图的后退按钮项:

View1.navigationItem.backBarButtonItem.title = @"My New Title";
Run Code Online (Sandbox Code Playgroud)

要么:

View1.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleBordered target:nil action:nil] autorelease];
Run Code Online (Sandbox Code Playgroud)

您的第三个选择是使用自定义按钮来替换后退按钮.它将允许您指定自己的方法来调用,因此您不需要使用-viewWillDisappear:,但这样做会将按钮显示为矩形而不是后退箭头按钮.此按钮位于View2而不是View1上:

View2.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleDone target:self action:@selector(dismissView)] autorelease];
Run Code Online (Sandbox Code Playgroud)