我正在使用this现象框架,并且无法更新工具栏上的按钮。我按照NavigationDrawerController的示例代码。所以最初,工具栏左侧是menuButton,右侧是另外两个按钮:
// From AppToolbarController.swift
fileprivate func prepareToolbar() {
toolbar.leftViews = [menuButton]
toolbar.rightViews = [switchControl, moreButton]
}
现在,当我想从另一个ViewController更改工具栏中的按钮时,我(我很天真)执行以下操作:
// From RootViewController.swift
fileprivate func prepareToolbar() {
guard let tc = toolbarController else {
return
}
tc.toolbar.rightViews = [someOtherButton]
}
然而,这没有效果,按钮保持不变。当之前未设置toolbar.rightViews时,此方法仅适用于我。
更新工具栏按钮的正确方法是什么?
答案 0 :(得分:1)
我认为问题可能是您从Toolbar
函数调用更新prepareToolbar
(viewDidLoad
)函数。问题是RootViewController
实际上并未与toolbarController
相关联。尝试将prepareToolbar
函数移动到视图控制器的viewWillAppear
函数。如果这没有帮助,你能显示代码设置吗?一切顺利!
代码示例:
class RootViewController: UIViewController {
fileprivate var remindersButton: IconButton!
open override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = Color.white
}
open override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
prepareRemindersButton()
prepareToolbar()
}
}
extension RootViewController {
fileprivate func prepareRemindersButton() {
remindersButton = IconButton(image: Icon.cm.bell, tintColor: .white)
remindersButton.pulseColor = .white
}
fileprivate func prepareToolbar() {
guard let toolbar = toolbarController?.toolbar else {
return
}
toolbar.title = "Material"
toolbar.titleLabel.textColor = .white
toolbar.titleLabel.textAlignment = .left
toolbar.detail = "Build Beautiful Software"
toolbar.detailLabel.textColor = .white
toolbar.detailLabel.textAlignment = .left
toolbar.rightViews = [remindersButton]
}
}