我想从后退按钮中删除文本,但我想保留图标.我试过了
let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
Run Code Online (Sandbox Code Playgroud)
但是,这会完全删除文本和图标.
d9r*_*rad 119
我知道这已经有了答案,但您也可以在代码中执行此操作(如果您正在使用nib)
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
Run Code Online (Sandbox Code Playgroud)
在第一个视图控制器中添加上面的内容.
请注意,您需要为每个正在推送的视图控制器执行此操作.因此,如果您有3个视图控制器,并且想要从所有视图控制器中删除背面文本,则必须在视图控制器1和2中添加该行.
m8l*_*abs 85
@ rmd2的方法几乎是正确的,但您应该选择后退按钮指向的控制器的导航栏并输入" "
后退按钮字段.
Ste*_*fan 33
后退按钮的文本取决于主视图的标题.
诀窍是如果主视图消失则清除标题,如果再次显示则再次设置它:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
// needed to clear the text in the back navigation:
self.navigationItem.title = " "
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationItem.title = "My Title"
}
Run Code Online (Sandbox Code Playgroud)
Muh*_*air 32
如果你想从一个推视图控制器删除后退按钮的标题,比方说<Settings
要<
在subSettingsViewController,那么你已经设置backBarButtonItem冠军SettingsViewController的viewWillDisappear()方法.
Objective-C的:
- (void)viewWillDisappear:(BOOL)animated
[super viewWillDisappear:animated];
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:self.navigationItem.backBarButtonItem.style target:nil action:nil];
}
Run Code Online (Sandbox Code Playgroud)
迅速:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}
Run Code Online (Sandbox Code Playgroud)
iOS*_*fee 25
经过大量搜索,我找到了最好的解决方案,这将影响用Swift 4.2编写的所有viewControllers
extension UIViewController {
open override func awakeFromNib() {
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
Pra*_*noi 24
如果你想要后面的箭头,那么下面的代码放入AppDelegate文件到didFinishLaunchingWithOptions方法.
对于斯威夫特
let BarButtonItemAppearance = UIBarButtonItem.appearance()
BarButtonItemAppearance.setTitleTextAttributes([.foregroundColor: UIColor.clear], for: .normal)
Run Code Online (Sandbox Code Playgroud)
Raf*_*san 23
在我的情况下,对于自定义图标和标题,这就成功了(Swift 4)
let imgBack = UIImage(named: "ic_back")
navigationController?.navigationBar.backIndicatorImage = imgBack
navigationController?.navigationBar.backIndicatorTransitionMaskImage = imgBack
navigationItem.leftItemsSupplementBackButton = true
navigationController?.navigationBar.topItem?.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: self, action: nil)
Run Code Online (Sandbox Code Playgroud)
小智 19
这对我有用
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.topItem?.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
}
Run Code Online (Sandbox Code Playgroud)
小智 14
我通过在前一个ViewController的StoryBoard标题上添加""来解决了这个问题.只是一个空间,不是空的; D
Lal*_*mar 11
终于找到了完美的解
只需添加一个透明图像,然后在AppDelegate中添加以下代码即可.
UIBarButtonItem.appearance().setBackButtonBackgroundImage(#imageLiteral(resourceName: "transparent"), for: .normal, barMetrics: .default)
Run Code Online (Sandbox Code Playgroud)
Ama*_*Kar 10
在快速4
self.navigationController?.navigationBar.topItem?.title = ""
Run Code Online (Sandbox Code Playgroud)
对于斯威夫特4+ 把这些线成AppDelegate
在didFinishLaunchingWithOptions
let BarButtonItemAppearance = UIBarButtonItem.appearance()
BarButtonItemAppearance.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.clear], for: .normal)
BarButtonItemAppearance.setBackButtonTitlePositionAdjustment(UIOffsetMake(-200, 0), for:UIBarMetrics.default)
Run Code Online (Sandbox Code Playgroud)
如果您有一个 ViewControllerA 并且想要导航到 ViewControllerB,则在 ViewControllerA 中,您应该使用新的 UIBarButtonItem 将当前导航项设置为带有空格的字符串,然后再推送到另一个视图控制器:
将标题设置为带空格的字符串,不能设置nil或""(空字符串),因为默认值为nil
let backItem = UIBarButtonItem()
backItem.title = " "
navigationItem.backBarButtonItem = backItem
let controllerB = ViewControllerB()
navigationController?.pushViewController(controllerB, animated: true)
Run Code Online (Sandbox Code Playgroud)
将此代码放在每个 VC 中,这会推动另一个
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
Run Code Online (Sandbox Code Playgroud)
您可以使用 的委托方法从后退按钮中删除文本UINavigationController
。
class CustomNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
}
extension CustomNavigationController: UINavigationControllerDelegate {
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: String(), style: .plain, target: nil, action: nil)
}
}
Run Code Online (Sandbox Code Playgroud)