0

我正在使用这个非凡的框架,并且在更新工具栏上的按钮时遇到了困难。我遵循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 的情况。

更新工具栏按钮的正确方法是什么?

4

1 回答 1

1

我认为问题可能是您正在从函数中调用 update 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]
    }
}
于 2017-01-20T16:32:03.403 回答