首先,我试图用viewWillDisapper方法来管理它,但这对我来说还不够详细。他们是另一种解决方案吗?如何找出在UINavigationBar中是否点击后退按钮?
也尝试了委托:
- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item
但没有任何反应。
首先,我试图用viewWillDisapper方法来管理它,但这对我来说还不够详细。他们是另一种解决方案吗?如何找出在UINavigationBar中是否点击后退按钮?
也尝试了委托:
- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item
但没有任何反应。
您需要更改默认的返回按钮,在viewDidLoad
:
- (void) viewDidLoad
{
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(handleBack:)] autorelease];
}
,当然还有你在你的方法弹出控制器:
- (void) handleBack:(id)sender
{
// ... your code !
[self.navigationController popViewControllerAnimated:YES];
}
你应该尝试其他UINavigationBarDelegate
代表方法,–navigationBar:shouldPopItem:
,并在做任何你需要做的事情后返回YES
。在事情发生之前,“应该”调用委托方法。在发生之后调用“方法”。
您调用的方法不适用于后退按钮。后退按钮将“弹出”视图控制器。相反(你使用的是)“推”一个视图控制器。推送将新的视图控制器添加到堆栈。弹出窗口从堆栈中删除视图控制器。
此外,请确保符合UINavigationBarDelegate
。如果您使用的委托方法没有发生任何事情,则会发生错误。 AFAIK如果您使用UINavigationController
,代表应自动设置。 “
谢谢!我有一个符合委托的UINavigationController,但没有一个委托方法适用于我的应用程序。这很奇怪。 – Dopamine 2010-10-10 19:18:45
然后要做的第一件事是找出为什么你的委托方法没有被调用。复制并粘贴文档中的方法名称。在更简单的应用程序中使用委托方法来查看它们的工作方式。查看你的代码并阅读如何让代表工作。 – 2010-10-10 23:19:00
”还试了委托:......但没有任何反应。“ 首先要做的是在你怀疑没有被调用的函数内部设置一个断点。只需点击xcode中代码的左侧即可设置断点。
不要忘记释放该按钮项目。否则,你在泄漏它。 – 2010-10-10 18:23:09
Thx。是否有可能将按钮设置回箭头形状? – Dopamine 2010-10-10 19:20:15
-1,这会泄漏。像这样创建它: 'UIBarButtonItem * button = [[UIBarButtonItem alloc] initWithTitle:@“Back”style:UIBarButtonItemStyleBordered target:self action:@selector(handleBack :)];',像这样设置:'self.navigationItem。 leftBarButtonItem =按钮;'和**记得释放它,''[按钮释放]'。 – Emil 2010-10-10 20:43:21