3

我难住了。我正在使用 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)下方的视图时,该视图的后退按钮将是什么的参考。但是当它是顶视图( refself.navigationItem.hidesBackbutton )时是否显示后退按钮。那么有谁知道为什么它会隐藏下一个视图的后退按钮?

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

A > B > C > D

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

有任何想法吗?

4

3 回答 3

9

在处理UINavigationController. 与您类似的问题是NavigationController 的 backButton don't appear

我对此进行了一些测试,虽然我在这里没有解释,但有一些建议可能会对您有所帮助。

  • 只调用setHidesBackButton:animated:inviewDidAppear:不是inviewWillAppear:
  • 不要self.navigationItem.hidesBackButton在任何地方使用。
于 2010-12-07T18:50:52.383 回答
4

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

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]];
于 2013-03-09T00:21:05.207 回答
1

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

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

 self.navigationItem.leftBarButtomItem = nil;

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

于 2010-12-07T18:33:01.053 回答