iPhone - UINavigationItem - 隐藏后退按钮
Posted
技术标签:
【中文标题】iPhone - UINavigationItem - 隐藏后退按钮【英文标题】:iPhone - UINavigationItem - hiding back button 【发布时间】:2010-12-07 16:37:59 【问题描述】:我被难住了。我正在使用 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,后退按钮会按原样显示。
有什么想法吗?
【问题讨论】:
【参考方案1】:在处理UINavigationController
时,似乎存在某种关于隐藏和显示后退按钮的错误。与您类似的问题是backButton of NavigationController don't appear。
我对此进行了一些测试,虽然我在这里没有解释,但有一些建议可能会对您有所帮助。
仅在viewDidAppear:
中调用setHidesBackButton:animated:
而在viewWillAppear:
中不
不要在任何地方使用self.navigationItem.hidesBackButton
。
【讨论】:
感谢您的回答。把它放在 viewDidAppear 有帮助。有什么办法可以让它瞬间停止闪烁?【参考方案2】:为了解决这个愚蠢的错误,我根本没有实现 setHidesBackButton,但在 viewDidLoad 我放了以下内容:
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]];
【讨论】:
谢谢,我遇到了完全相同的问题,您的解决方法有帮助!【参考方案3】:我猜你知道隐藏后退按钮不会阻止用户点击它?
要防止点击,您必须将其设置为 nil。
self.navigationItem.leftBarButtomItem = nil;
然后您可以在“B”的viewWillAppear
方法中创建一个新的后退按钮。
【讨论】:
以上是关于iPhone - UINavigationItem - 隐藏后退按钮的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationBar和UINavigationItem的基本分析使用
UINavigationItem.titleView 能否成为FirstResponder?