Pircate / EachNavigationBar

A custom navigation bar for each view controller.
MIT License
594 stars 71 forks source link

设计缺陷? #47

Open lixiang1994 opened 2 years ago

lixiang1994 commented 2 years ago

假设:

let vcs = self.navigationController?.viewControllers ?? []
self.navigationController?.setViewControllers(vcs.reversed(), animated: true)

setupNavigationBarWhenViewDidLoad()中的backBarButtonItem处理是不是就会有问题?

lixiang1994 commented 2 years ago

感觉可以用func setViewControllers(_ viewControllers: [UIViewController], animated: Bool)交换实现 来更新backBarButtonItem的显示, 明天我改一下试试看.

lixiang1994 commented 2 years ago

EachNavigationBarbackBarButtonItem 使用的是leftBarButtonItem, 这是否会和外部设置的leftBarButtonItemleftBarButtonItems 发生冲突??

这个问题很矛盾 我感觉需要你来斟酌一下, 是否要尽量与原生NavigationBar的特性保持一致?

    /// Bar button item to use for the back button in the child navigation item.
    open var backBarButtonItem: BackBarButtonItem? {
        didSet {
            backBarButtonItem?.navigationController = viewController?.navigationController

            viewController?._navigationItem.leftBarButtonItem = backBarButtonItem
        }
    }
Pircate commented 2 years ago

EachNavigationBarbackBarButtonItem 使用的是leftBarButtonItem, 这是否会和外部设置的leftBarButtonItemleftBarButtonItems 发生冲突??

这个问题很矛盾 我感觉需要你来斟酌一下, 是否要尽量与原生NavigationBar的特性保持一致?

    /// Bar button item to use for the back button in the child navigation item.
    open var backBarButtonItem: BackBarButtonItem? {
        didSet {
            backBarButtonItem?.navigationController = viewController?.navigationController

            viewController?._navigationItem.leftBarButtonItem = backBarButtonItem
        }
    }

系统的 backBarButtonItem 无法通过 UINavigationBar 来控制,所以只能自己实现了这套逻辑

lixiang1994 commented 2 years ago

setViewControllers的场景你看看怎么处理比较好?