ios 隐藏左侧导航按钮的文字
ios hide text of left navigation button
我只需要显示箭头按钮并隐藏左侧导航按钮的文本。根据这个link,我可以这样做。但如果我这样做,滑动返回功能将被破坏。
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
所以,我用这样来隐藏文本。
self.navigationController.navigationBar.topItem.title = @"";
到目前为止,没问题。但是,如果我以前视图的 searchDisplayController 处于活动状态并推送到新视图,它会显示左侧导航按钮文本。我可以知道怎么做吗?
一个解决方案,您必须添加 custom button
来满足您的要求,如下所示:
//create image instance add here back image
UIImage *imgBack = [UIImage imageNamed:@"image name here"];
//create UIButton instance for UIBarButtonItem
UIButton *btnBack = [UIButton buttonWithType:UIButtonTypeCustom];
[btnBack setImage:imgBack forState:UIControlStateNormal];
btnBack.frame = CGRectMake(0, 0, imgBack.size.width,imgBack.size.height);
[btnBack addTarget:self action:@selector(btnBackAction:) forControlEvents:UIControlEventTouchUpInside];
//create UIBarButtonItem instance
UIBarButtonItem *barBtnBackItem = [[UIBarButtonItem alloc] initWithCustomView:btnBack];
//set in UINavigationItem
self.navigationItem.leftBarButtonItem = barBtnBackItem;
按钮方法如下:
-(void)btnBackAction:(id)sender
{
[self.navigationController popViewControllerAnimated:YES];
}
EDIT : 对于 slide
swipe
添加 viewDidLoad
方法
//for enabling swipe gesture
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
将此行复制并粘贴到每个视图控制器中:
self.navigationController.navigationItem.leftBarButtonItem.title = " "
或者您可以使用以下步骤在 storyboard/xib 文件中实现此目的:-
- 将 导航项 从 object 库拖放到 ViewController 上。然后select ViewController。
- Select 左侧菜单中的 Navigation Item(它将带有后退箭头和 Title 的那个作为文本:“<标题”)。
- Select Attribute Inspector 并将文本:Title 替换为 empty space.
对所有视图控制器重复这些步骤。
希望对你有帮助。
@Atif 的回答是正确的。我只想补充一点,而不是在所有文件中复制和粘贴代码,创建一个自定义 UINavigationController 并实现 @Atif[= 提到的所需代码15=]。(由于评分低,我无法发表评论。)
我只需要显示箭头按钮并隐藏左侧导航按钮的文本。根据这个link,我可以这样做。但如果我这样做,滑动返回功能将被破坏。
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
所以,我用这样来隐藏文本。
self.navigationController.navigationBar.topItem.title = @"";
到目前为止,没问题。但是,如果我以前视图的 searchDisplayController 处于活动状态并推送到新视图,它会显示左侧导航按钮文本。我可以知道怎么做吗?
一个解决方案,您必须添加 custom button
来满足您的要求,如下所示:
//create image instance add here back image
UIImage *imgBack = [UIImage imageNamed:@"image name here"];
//create UIButton instance for UIBarButtonItem
UIButton *btnBack = [UIButton buttonWithType:UIButtonTypeCustom];
[btnBack setImage:imgBack forState:UIControlStateNormal];
btnBack.frame = CGRectMake(0, 0, imgBack.size.width,imgBack.size.height);
[btnBack addTarget:self action:@selector(btnBackAction:) forControlEvents:UIControlEventTouchUpInside];
//create UIBarButtonItem instance
UIBarButtonItem *barBtnBackItem = [[UIBarButtonItem alloc] initWithCustomView:btnBack];
//set in UINavigationItem
self.navigationItem.leftBarButtonItem = barBtnBackItem;
按钮方法如下:
-(void)btnBackAction:(id)sender
{
[self.navigationController popViewControllerAnimated:YES];
}
EDIT : 对于 slide
swipe
添加 viewDidLoad
方法
//for enabling swipe gesture
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
将此行复制并粘贴到每个视图控制器中:
self.navigationController.navigationItem.leftBarButtonItem.title = " "
或者您可以使用以下步骤在 storyboard/xib 文件中实现此目的:-
- 将 导航项 从 object 库拖放到 ViewController 上。然后select ViewController。
- Select 左侧菜单中的 Navigation Item(它将带有后退箭头和 Title 的那个作为文本:“<标题”)。
- Select Attribute Inspector 并将文本:Title 替换为 empty space.
对所有视图控制器重复这些步骤。 希望对你有帮助。
@Atif 的回答是正确的。我只想补充一点,而不是在所有文件中复制和粘贴代码,创建一个自定义 UINavigationController 并实现 @Atif[= 提到的所需代码15=]。(由于评分低,我无法发表评论。)