因此,我的应用程序中有一个UINavController,并试图在用户按下back按钮时执行一个方法。我到处都找过了,只能找到一些断章取义的零碎东西。
有没有一种方法可以在用户按下back按钮关闭当前视图时进行某种检查?(由于某些原因,用于弹出的视图的viewWillDisappear方法从不会被调用。我确实读到过,除非您转发该呼叫,否则不会。)这听起来对吗,有人有什么想法或建议吗?提前谢谢。
发布于 2010-11-02 04:08:21
如果你通过代码向UIView添加一个UINavigationController,那么默认情况下,它不会将这些消息发送到它的子视图。只有当UINavigationController自己接收到这些调用时,它才会这样做。也许这就是你的问题(我不知道你的视图设置)。
因此,在添加UINavigationController视图时,请确保手动向其发送这些消息。
UINavigationController *navigationController = [UINavigationController alloc] initWithRootViewController:rootViewController];
[navigationController viewWillAppear:NO];
[aView addSubview:navigationController.view];
[navigationController viewDidAppear:NO];至少,这是我在开发过程中发现的。我已经寻找了很长一段时间,但我仍然不明白它背后的理由。
发布于 2011-07-22 01:16:35
看一看UINavigationControllerDelegate。当UIViewController被推送到导航控制器堆栈时,只有两个方法会被调用。类似地,如果一个正在被推送,那么可能只是弹出了一些东西。这就是我称之为viewDidDisappear和viewWillDisappear的方式。
# pragma mark - UINavigationControllerDelegate Methods
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
static UIViewController *vcPointer = nil;
// If the previous view controller is still around then let's send a viewWillDisappear message
if (vcPointer != nil) {
if ([vcPointer respondsToSelector:@selector(viewWillDisappear:)]) {
[vcPointer viewWillDisappear:animated];
}
}
// Keep track of a pointer to the current viewController
vcPointer = viewController;
[viewController viewWillAppear:animated];
}这段代码保持了对上一个被推入的视图控制器的指针引用,这样一旦我们推入另一个,我们就可以弹出最后一个(如果它仍然存在的话)。
发布于 2010-11-02 04:09:30
您可以始终隐藏默认的后退导航按钮,并使用其自己的方法创建自己的按钮,以便在按下时调用。
执行你想要的任何代码,然后弹出视图。
https://stackoverflow.com/questions/4072192
复制相似问题