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,则后退按钮会按应有的方式显示。
有什么想法吗?
I'm stumped. I'm using a UINavigationController and on one view I'm trying to hide the back button. But when I do that it hides the back button on the next level of views also.
In - (void)viewWillAppear:(BOOL)animated
I have:
[self.navigationItem setHidesBackButton:YES animated:NO];
And in - (void)viewWillDisappear:(BOOL)animated
I have:
[self.navigationItem setHidesBackButton:NO animated:NO];
This just makes the back button appear just before it leaves (which seems like that is the correct functionality of that call). Therefore I tired to put
[self.navigationItem setHidesBackButton:NO animated:NO];
in - (void)viewWillAppear:(BOOL)animated
of the next view, and that still doesn't work.
This is a little confusing since self.navigationItem.backBarButtonItem
is a reference of what that view's back button will be when it is the view just under the top view (ref). But self.navigationItem.hidesBackbutton
is whether the back button is shown when it is the top view (ref). So does anyone have any idea why it would hide the back button of the next view?
Another strange thing is it works when I go another view down. For a more visual representation, lets say I have the following views:
A > B > C > D
B is the view I'm concerned about. I want to hide the back button which would go to A. When I do that it hides the back button on C also. But if I do down to D, the back button shows up and then everything acts as it "should." That is, I can go back to C, then Back to B. B has it's back button hidden and if I go back into C the back button shows up like it should.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在处理 UINavigationController 时,似乎存在某种关于隐藏和显示后退按钮的错误。与您类似的问题是NavigationController的backButton不出现。
我对此做了一些测试,虽然我没有解释,但这里有一些可能对您有帮助的建议。
viewDidAppear:
中调用setHidesBackButton:animated:
,在viewWillAppear:
中不调用self.navigationItem.hidesBackButton
任何地方。There seems to be some kind of bug regarding the hiding and showing of the back button when dealing with a
UINavigationController
. A similar problem to yours is backButton of NavigationController don't appear.I did some testing regarding this and while I don't have an explanation here are some suggestions that might help you.
setHidesBackButton:animated:
inviewDidAppear:
and not inviewWillAppear:
self.navigationItem.hidesBackButton
anywhere.为了解决这个愚蠢的错误,我根本没有实现 setHidesBackButton,但在 viewDidLoad 中我输入了以下内容:
To get by this stupid bug, I did not implement setHidesBackButton at all, but in viewDidLoad I put the following:
我想您知道隐藏后退按钮并不会阻止用户单击它?
为了防止点击,你必须将其设置为零。
然后您可以在“B”的 viewWillAppear 方法中创建一个新的后退按钮。
I guess you know that hiding the back button doesn't prevent a user from clicking on it?
To prevent a click, you have to set it as nil.
Then you could create a new back button in "B"'s
viewWillAppear
method.