Pan*_*yue 197 uinavigationbar uibarbuttonitem uinavigationitem ios
我想要做的是从a的"后退"按钮中删除文本UIBarButtonItem,只在导航栏上留下蓝色V形符号.请记住,我正在为iOS 7开发.我尝试了几种方法,包括但不限于:
这是我不喜欢的图像方法(图像看起来不合适):
UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"iOS7BackButton"] style:UIBarButtonItemStylePlain target:self action:@selector(goToPrevious:)];
self.navigationItem.leftBarButtonItem = barBtnItem;
Run Code Online (Sandbox Code Playgroud)
我试过的另一种方法是这个,它根本不起作用(没有显示):
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]init];
barBtn.title=@"";
self.navigationItem.leftBarButtonItem=barBtn;
Run Code Online (Sandbox Code Playgroud)
我想要实现的是像iOS 7音乐应用程序中的后退按钮,它只有一个单一的V形.
谢谢.
Don*_*Lea 411
要为视图控制器设置后退按钮标题而不更改其标题,请使用:
Objective-C的:
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:self.navigationItem.backBarButtonItem.style target:nil action:nil];
Run Code Online (Sandbox Code Playgroud)
迅速:
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
Run Code Online (Sandbox Code Playgroud)
要清楚,这是在视图控制器上完成的,如果按下后退按钮,您将看到它.即,而不是看到'<设置',你只想看到'<'然后在你的SettingsViewController上,你会把它放在你的init.然后,当您查看视图控制器本身时,不会显示标题的任何问题.
小智 198
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-60, -60)
forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)
然后,您可以删除后退按钮项目标题.
如果使用Storyboard,则可以使用空格设置导航属性检查器后退按钮.
Nik*_*kin 128
如果您使用的是Storyboard,则可以转到Attributes InspectorViewController Navigation Item(单击Navigation Bar)并将Back Button属性设置为""(一个空格字符).这会将后退按钮标题设置为一个空格字符,使人字形可见.无需乱码.

请注意,这将设置后退按钮的Back Button标题,该后退按钮将从在其上推动的视图控制器中切换到该视图控制器,而不是Back Button将在此控制器内显示的那个!
Gut*_*ujo 122
这对我来说只显示没有任何文字的'后'雪佛龙:
self.navigationController.navigationBar.topItem.title = @"";
Run Code Online (Sandbox Code Playgroud)
viewDidLoad在视图控制器中设置此属性,显示导航栏,它将完成这一操作.
注意:我只在iOS 7中测试过,这是在问题范围内.
Kam*_*ros 27
当您设置按钮的标题时,请使用@""而不是@"".
- 编辑 -
当你尝试其他字符串时有什么改变吗?我成功地使用了以下代码:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:backString style:UIBarButtonItemStyleDone target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];
Run Code Online (Sandbox Code Playgroud)
backString是一个设置为@""或@"Back"的变量,具体取决于我是否使用iOS 7或更低版本.
需要注意的一点是,此代码不在我想要自定义后退按钮的页面的控制器中.它实际上位于导航堆栈之前的控制器中.
Sur*_*gch 27
有时在上下文中查看内容会很有帮助.这是一个隐藏"后退"文本但仍显示箭头的最小项目.
故事板
从"显示第二视图控制器"按钮到第二视图控制器有一个show segue.
我还向第二个视图控制器添加了一个导航项,以便它有一个标题.这是可选的.它不会影响后退按钮.
码
FirstViewController.swift
import UIKit
class FirstViewController: UIViewController {
@IBAction func showSecondViewControllerButtonTapped(sender: UIButton) {
// hide the back button text
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
SecondViewController.swift
import UIKit
class SecondViewController: UIViewController {
// Nothing at all needed here
}
Run Code Online (Sandbox Code Playgroud)
在故事板上选择第一个视图控制器的导航项(而不是第二个).只需为后退按钮文本输入空格即可.
Cla*_*tro 15
self.navigationController.navigationBar.topItem.title = @"";
Run Code Online (Sandbox Code Playgroud)
DZe*_*Bot 11
在iOS7上,Apple向UINavigationBar引入了两个新属性,'backIndicatorTransitionMaskImage'和'backIndicatorImage'.
只需拨打一次:
[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"your_image"]];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"your_image_mask"]];
Run Code Online (Sandbox Code Playgroud)
它将渲染自定义图像而不是默认的V形符号,继承keyWindow的色调颜色.
为了删除标题,我会建议Kamaros的答案.请记住在推动新视图控制器的视图控制器上调用此代码.删除iOS UIBarButtonItem的标题文本
Gra*_*mbo 10
我提供的答案并没有取得很大的成功,但我找到了一个非常简单的工作.在故事板中,您可以单击UIViewController的导航项并设置后退按钮文本.我将它设置为一个单独的空间,它给了我正在寻找的行为.
小智 10
这在iOS10中适用于我.从视图控制器的viewDidLoad中调用它.
self.navigationController?.navigationBar.topItem?.title = ""
Run Code Online (Sandbox Code Playgroud)
在iOS7和6上工作的这个问题的简单解决方案是在viewDidLoad中设置自定义标题视图:
- (void)viewDidLoad {
[super viewDidLoad];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
titleLabel.text = self.title;
titleLabel.backgroundColor = [UIColor clearColor];
[titleLabel sizeToFit];
self.navigationItem.titleView = titleLabel;
}
Run Code Online (Sandbox Code Playgroud)
然后,在viewWillAppear中:你可以安全地打电话
self.navigationController.navigationBar.topItem.title = @" ";
Run Code Online (Sandbox Code Playgroud)
由于您的标题视图是自定义视图,因此在向后移动导航堆栈时不会被覆盖.
实际上你只需要一个技巧就可以做到这一点:
覆盖UINavigationBar类并添加以下代码行:
- (void)layoutSubviews{
self.backItem.title = @"";
[super layoutSubviews];
}
Run Code Online (Sandbox Code Playgroud)
然后UINavigationController使用此自定义UINavigationBar类初始化您..等.UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil];
希望这可以帮助
使用DonnaLea的答案,我可以将一些东西拼凑在一起。这是解决方案出现在我的UIViewController子类中的方式:
var backItemTitle:String?
override func viewDidLoad() {
super.viewDidLoad()
//store the original title
backItemTitle = self.navigationController?.navigationBar.topItem?.title
//remove the title for the back button
navigationController?.navigationBar.topItem?.title = ""
}
override func willMoveToParentViewController(parent: UIViewController?) {
super.willMoveToParentViewController(parent)
if parent == nil {
//restore the orignal title
navigationController?.navigationBar.backItem?.title = backItemTitle
}
}
Run Code Online (Sandbox Code Playgroud)
原始答案的问题在于,当您弹回控制器时,它将标题从控制器中删除。在过渡过程中尝试重置viewWillDisappear中的标题为时已晚;这会导致标题跳回去,而不是很好地制作动画。但是willMoveToParentViewController会更早发生,并允许正确的行为。
警告:我仅使用普通的UINavigationController push / pop测试了此情况。在其他情况下,可能还会有其他意外行为。
| 归档时间: |
|
| 查看次数: |
125866 次 |
| 最近记录: |