如何在 Swift 中替换 Material 中的后退按钮
Posted
技术标签:
【中文标题】如何在 Swift 中替换 Material 中的后退按钮【英文标题】:How to replace back button in Material in Swift 【发布时间】:2017-07-04 02:57:25 【问题描述】:我想更改后退按钮的行为,并将 Material 的后退按钮替换为新的条形按钮,如下所示:
let backButton: UIButton =
let btn = UIButton()
btn.setImage(UIImage(named: "prev"), for: .normal)
btn.frame = CGRect(x: 0, y: 0, width: 33/2, height: 27/2)
return btn
()
在viewDidLoad函数中:
override func viewDidLoad()
super.viewDidLoad()
backButton.action = [weak self] in self?.showAlert()
let barButton = UIBarButtonItem(customView: backButton)
navigationItem.backButton.isHidden = true
navigationItem.leftBarButtonItems = [barButton]
但我无法点击新的后退按钮,因为它已被 UINavigationBarBackIndicatorView 覆盖。
如何用 Material 替换后退按钮。我想保留 Material 库,因为在项目的其他功能中我需要 Material。
提前感谢您的帮助。
【问题讨论】:
您的问题解决了吗? 已修复:Material。非常感谢您对我的问题的帮助。 如果您觉得我的回答有帮助,请将其标记为有用/已接受 【参考方案1】:在您的 viewDidLoad()
方法中执行此操作:
self.navigationItem.backBarButtonItem.hidden = YES
let newBackButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.plain, target: self, action: #selector(YourViewController.back(sender:)))
self.navigationItem.leftBarButtonItem = newBackButton
self.navigationItem.leftBarButtonItem?.image = UIImage(named : "prev")
self.navigationItem.leftBarButtonItem?.accessibilityFrame = CGRect(x: 0, y: 0, width: 33/2, height: 27/2)
然后在您的视图控制器中定义一个名为back
的函数,该函数将为您的新后退按钮执行所需的操作
func back(sender: UIBarButtonItem)
// Perform your custom action
注意无需单独定义按钮变量
**如果self.navigationItem.backBarButtonItem.hidden = YES
不起作用,则将其替换为self.navigationItem.backBarButtonItem = nil;
**
【讨论】:
感谢您的回答,但 Material 的后退按钮并未隐藏。 或者你试试这个:navigationItem.hidesBackButton = true
,首先使用我显示的代码,然后根据需要进行更改
我在development
分支中为你做了一个修复。如果你在 github 上提出这个问题,我会在我将它发布到 master 分支后更新你。应该不会超过几天。【参考方案2】:
将 backButton.isHidden 与包含新自定义 IconButton 的 leftViews 一起使用对我有用,我使用的是 Material 2.17.0。
func setNavigation()
let backButton = IconButton(image: Icon.cm.arrowBack)
backButton.addTarget(self, action: #selector(onBackTapped), for: .touchUpInside)
navigationItem.leftViews = [backButton]
navigationItem.backButton.isHidden = true
【讨论】:
以上是关于如何在 Swift 中替换 Material 中的后退按钮的主要内容,如果未能解决你的问题,请参考以下文章
如何在swift中使用Google Material MDCOutlinedTextField从文本字段中删除占位符文本?
python 对于当前Blender场景中的所有对象,搜索名为MATERIAL.001,MATERIAL.002 ...的材质,并替换为母版
Material-UI:如何在 react admin <Login /> 中替换 backgroundImage css?