【发布时间】:2010-10-11 11:34:49
【问题描述】:
我添加了一个导航控件来在我的应用中的视图之间切换。但有些视图不应该有“返回”(前一个标题)按钮。关于如何隐藏后退按钮的任何想法?
【问题讨论】:
标签: ios objective-c iphone navigation uinavigationcontroller
我添加了一个导航控件来在我的应用中的视图之间切换。但有些视图不应该有“返回”(前一个标题)按钮。关于如何隐藏后退按钮的任何想法?
【问题讨论】:
标签: ios objective-c iphone navigation uinavigationcontroller
目标-C:self.navigationItem.hidesBackButton = YES;
斯威夫特:navigationItem.hidesBackButton = true
【讨论】:
self.navigationItem.leftBarButtonItem = nil; 隐藏后退按钮。如果你明确设置了leftbarbuttonitem,你可以使用self.navigationItem.leftBarButtonItem = nil;。 self.navigationItem.hidesBackButton = YES; 将隐藏返回按钮项
最好的办法是把它们结合起来,这样即使你手动设置它也会隐藏后退按钮:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
【讨论】:
用下面的代码隐藏后退按钮...
[self.navigationItem setHidesBackButton:YES animated:YES];
或
[self.navigationItem setHidesBackButton:YES];
另外,如果您有自定义 UINavigationBar,请尝试以下代码
self.navigationItem.leftBarButtonItem = nil;
【讨论】:
在 Swift 中:
将此添加到控制器
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
【讨论】:
使用代码:
self.navigationItem.backBarButtonItem=nil;
【讨论】:
在 UIViewController 的 viewDidLoad 函数中使用代码:
self.navigationItem.hidesBackButton = YES;
【讨论】:
不要忘记您需要在具有导航控制器的对象上调用它。例如,如果您有导航控制器推送带有 RootViewController 的选项卡栏控制器,则在 RootViewController 上调用 self.navigationItem.hidesBackButton = YES 将无济于事。您实际上必须致电self.tabBarController.navigationItem.hidesBackButton = YES
【讨论】:
在您的视图控制器中添加此代码
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
【讨论】:
不要忘记我们现在有滑动到后退的手势。您可能也想删除它。 如有必要,请不要忘记重新启用它。
if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
self.navigationItem.hidesBackButton = YES;
}
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
【讨论】:
"back button" 的控制器将被启用 :) 另外请注意,一旦用户离开当前场景,您需要重新启用interactivePopGestureRezognizer。
对我来说,上述方法似乎都不起作用,它没有视觉效果。我正在使用带有“嵌入”在导航控制器中的视图的情节提要。
然后我在代码级别添加我的 menuItems,由于某种原因,“backButton”在可视化调试视图层次结构时可见,并且我的 menuItem 图标显示在不可见的“后退按钮”下方。
我按照各种钩子方法的建议尝试了设置,但没有效果。然后我尝试了一种更野蛮的方法并迭代了同样没有效果的子视图。
我检查了我的图标大小,似乎没问题。 在参考了他的苹果人机界面指南后,我确认我的图标是正确的。 (在我的情况下小 1 像素 24px 48px 72px)。
最奇怪的部分是实际的修复......
在添加 BarButton 项时,给它一个至少包含一个字符的标题,在我的例子中是一个空格字符。
希望这对某人有所帮助。
//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX
style:UIBarButtonItemStylePlain
target:self
action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];
[self.navigationItem setLeftBarButtonItem:leftButtonItem];
【讨论】:
当我设置时,它并不是在所有情况下都适合我
self.navigationItem.hidesBackButton = YES;
在 viewWillAppear 或 ViewDidLoad 中,但当我在 viewController 的 init 中设置它时效果很好。
【讨论】:
试试这个 -
self.navigationController?.navigationItem.hidesBackButton = true
【讨论】:
在 c# 或 Xamarin.ios 中, this.NavigationItem.HidesBackButton = true;
【讨论】:
【讨论】:
self.navigationItem.setHidesBackButton(true, animated: true)
【讨论】: