iPhone - UINavigationItem - 隐藏后退按钮

时间:2010-12-07 16:37:59

标签: iphone uinavigationitem

我很难过。我正在使用UINavigationController并在一个视图上我试图隐藏后退按钮。但是,当我这样做时,它也隐藏了下一级视图的后退按钮。

- (void)viewWillAppear:(BOOL)animated我有:

[self.navigationItem setHidesBackButton:YES animated:NO];

- (void)viewWillDisappear:(BOOL)animated我有:

[self.navigationItem setHidesBackButton:NO animated:NO];

这只会使后退按钮在它离开之前出现(这似乎是该调用的正确功能)。因此我厌倦了

[self.navigationItem setHidesBackButton:NO animated:NO];

在下一个视图的- (void)viewWillAppear:(BOOL)animated中,但仍然不起作用。

这有点令人困惑,因为self.navigationItem.backBarButtonItem是该视图的后退按钮在顶视图(ref)下方的视图时的参考。但是self.navigationItem.hidesBackbutton是当后退按钮是顶视图(ref)时是否显示。那么有谁知道为什么它会隐藏下一个视图的后退按钮?

另一个奇怪的事情是,当我再看另一个视图时它会起作用。为了更直观的表示,我可以说我有以下观点:

A > B > C > D

B是我关注的观点。我想隐藏后退按钮,它会转到A.当我这样做时,它也会隐藏C上的后退按钮。但是,如果我做到D,后退按钮会出现,然后一切都按照“应该”行事。也就是说,我可以回到C,然后回到B. B隐藏了后退按钮,如果我回到C,后退按钮就会显示出来。

有什么想法吗?

3 个答案:

答案 0 :(得分:9)

在处理UINavigationController时,似乎存在关于隐藏和显示后退按钮的某种错误。与您类似的问题是backButton of NavigationController don't appear

我做了一些关于此的测试,虽然我在这里没有解释,但有些建议可能会对你有帮助。

  • 仅调用setHidesBackButton:animated:中的viewDidAppear:viewWillAppear:
  • 中的
  • 请勿在任何地方使用self.navigationItem.hidesBackButton

答案 1 :(得分:4)

为了解决这个愚蠢的错误,我根本没有实现setHidesBackButton,但在viewDidLoad中我提出了以下内容:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]];

答案 2 :(得分:1)

我想你知道隐藏后退按钮不会阻止用户点击它吗?

要防止点击,您必须将其设置为nil。

 self.navigationItem.leftBarButtomItem = nil;

然后你可以在“B”的viewWillAppear方法中创建一个新的后退按钮。