隐藏导航控制器返回按钮iOS 7

15
我尝试通过在我的viewDidLoad方法中添加以下行来隐藏导航控制器中的返回按钮。许多SO上之前的答案说这样可以,所以我不知道我的问题是什么?也许是iOS 7 / Xcode 5有了一些新的变化?
self.navigationItem.hidesBackButton = YES;
self.navigationController.navigationItem.hidesBackButton = YES;

3
self.navigationItem和self.navigationController.navigationItem是否返回非nil对象? - Cutetare
不,这可能无法在iOS7/Xcode5上工作... 可能是您设计的项目堆栈出了问题... - Kumar KL
@Cutetare 我怎样确定它们是否返回了非空对象?我在代码行上设置了断点,但是 navigationController 在调试控制台窗口的 self 下面没有显示出来。另外,我应该补充说明,我是在 storyboard 中创建了这个视图控制器,那么这会导致这段代码不起作用吗? - Adam Johns
@KumarKl 是不是因为我使用了故事板创建视图控制器? - Adam Johns
你可以简单地使用 NSLog(@"%@", self.navigationItem) 或者设置一个断点,在调试控制台(与 NSLog 相同的部分,而不是左侧部分)中,当达到断点时,控制台会询问 (lldb),只需输入 po self.navigationItem 即可。即使你正在使用故事板(假设你已经适当地连接了你的对象),这也应该可以工作。 - Cutetare
4个回答

36

我也遇到过类似的问题。 只有在您没有定制您的导航栏时,这才有效。 以下其中一个将起作用。

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

请检查您在中是否获得了“Back”,然后上述内容将起作用。

希望这能帮助您确定问题。


7
UINavigationController 中,我们可以这样隐藏:
[self.navigationItem setHidesBackButton:YES animated:YES];

UITabBarController中,我们可以这样隐藏:

self.tabBarController.navigationItem.hidesBackButton = YES;

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

1
如果可以的话,请添加一些解释,说明这段代码是如何工作的,以及为什么原始代码不起作用。 - KhorneHoly
1
我刚刚创建了一个空的leftBarButton来隐藏backButton。OP的代码可以正常工作。我认为他还有另一个错误。 - JPlay
我认为如果您在意图上添加一些解释,对于原帖作者和其他访问者会更有帮助。 - Reporter
这是我找到的唯一正确隐藏每个调用代码中返回按钮的方法。 - Gianluca P.

2
请使用以下代码:
[self.navigationItem setHidesBackButton:YES animated:YES]; // hide back button

[self.navigationItem setBackBarButtonItem:nil]; // set as nil

[self.navigationItem setLeftBarButtonItem:nil animated:NO];  // left bar item as nil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接