iOS导航栏中的原始后退按钮在用自定义替换后会短暂显示

时间:2013-08-04 19:37:56

标签: iphone objective-c uinavigationcontroller

在开始之前,我只想提供一些背景信息。我以前在我的iOS应用程序中实现了一个自定义后退按钮。那时候,我让它在几分钟内完成,所以这是一次非常好的体验。

但这一次,我遇到了一些奇怪的问题。首先,自定义后退按钮根本没有显示。然后,我让它重叠原来的后退按钮。但是,我可以永远不会删除原来的后退按钮。

在我找到答案之前,我一直不知所措:http://smartercoder.com/2010/10/18/what-to-do-it-self-navigationitem-hidesbackbutton-true-doesnt-work。解决方案是设置一个虚拟左按钮并将其删除,然后告诉导航项隐藏后退按钮并添加自定义按钮。

但是,虽然自定义按钮现在替换了原始按钮,但结果并不像我的第一个应用程序那样好。在推送过渡期间,我仍然会短暂地看到原始的后退按钮。显然,如果它根本不显示会更好。

这是我在 viewDidLoad

中运行的代码
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]];
self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.hidesBackButton = YES;
self.navigationItem.leftBarButtonItem = [UIBarButtonItem barButtonItemWithImage:[UIImage imageNamed:@"toolbar-button-back"] andAction:@selector(triggerBackNavigation:) withTarget:self];

如果有人知道如何在推动过渡期间(向前和向后)完全移除原始后退按钮,我很乐意听到它。

1 个答案:

答案 0 :(得分:0)

我正在测试您的代码。这一切似乎都运作良好。但我肯定会先说这个:

self.navigationItem.hidesBackButton = YES;

调用此函数后,再创建新的leftBarButtonItem。我使用的完整代码如下:

self.navigationItem.hidesBackButton = YES;
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Hi"
                                                                         style:UIBarButtonItemStylePlain
                                                                        target:self
                                                                        action:@selector(triggerBackNavigation:)];

我知道你正在使用图片,但我只是使用带文字的按钮来查看它是否正常工作。