导航后退按钮在iPhone应用程序中的事件事件
我正在开发iPhone应用程序。应用程序顶部有一个导航栏。我有两个视图说“视图1”和“视图2”。当您按“View2”视图控制器时,导航栏会显示一个带有“View1”标题的后退按钮,以便您可以返回到view1。导航后退按钮在iPhone应用程序中的事件事件
现在我的问题是当你点击那个按钮时会触发哪个事件?也有可能改变导航栏中后退按钮的文本?
任何帮助将不胜感激?
谢谢
没有具体的事件,你可以得到只是为了后退按钮。您可以改用各种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;
}
请注意,布尔值goSoScreen和goingToSubscreen应设置为named。如果您将另一个视图推到View2之上的导航控制器上,则应该将goingToSubscreen设置为YES,以便它不执行重要的操作。相反,您应该在按View2后将ViewToSubscreen上的wentToSubscreen设置为YES,以便当它再次出现时,它从该屏幕返回后会发生一些有趣的事情,而不是当View1最初出现时。
编辑: 作为的iOS 5.0的,我相信有都内置了这个特性。在按下后退按钮的情况下,在viewWillDisappear:
和viewDidDisappear:
期间,isBeingDismissed
设置为YES
。作为参考,您可以检查的属性是:
isMovingFromParentViewController
isMovingToParentViewController
isBeingPresented
isBeingDismissed
至于改变后退按钮的名称,属性属于一个视图的后退按钮项:
View1.navigationItem.backBarButtonItem.title = @"My New Title";
或:
View1.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleBordered target:nil action:nil] autorelease];
您的第三个选择是使用自定义按钮替换后退按钮。它会让你指定你自己的方法来调用,所以你不需要使用-viewWillDisappear:
,但这样做会将按钮显示为矩形而不是后退箭头按钮。此按钮继续View2而不是View1:
View2.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleDone target:self action:@selector(dismissView)] autorelease];
我正在使用此解决方案用于钩子弹出视图控制器。
// In some view controller
- (void) viewDidDisappear:(BOOL)animated
{
if (self.navigationController == nil) {
// popped from navigation stack.
// do something...
}
}
不过,这并不钩如果视图控制器弹出,推过自将调用popToViewController:动画:具有低于自控制器在堆或popToRootViewController:动画: