Добавить пользовательскую панель инструментов для каждого представления в Swift, используя панель навигации или создание собственного класса? - PullRequest
0 голосов
/ 18 мая 2019

Я хочу, чтобы панель инструментов добавлялась к каждому виду моего приложения, который является очень простым и выглядит следующим образом: enter image description here

Примечание: левый и правый элементы будут одинаковыми вКаждое представление.

Мне интересно, было бы лучше настроить панель навигации в каждом контроллере представления или создать класс, расширяющий UIToolBar, и добавить его к каждому контроллеру.Что было бы лучше практиковать?

1 Ответ

2 голосов
/ 18 мая 2019

По мне, вы должны создать расширение UIViewController.У него будет метод, который будет содержать код для изменения панели навигации для этого контроллера представления.Таким образом, вы можете изменить панель навигации для требуемого экрана, и она будет очень гибкой в ​​плане дизайна.

Например, расширение ниже установит прозрачную панель навигации,

extension UIViewController {

func setTransparentNavBar(_ target: UIViewController, leftAcion: Selector, rightAction: Selector) {
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.isTranslucent = true

    self.navigationItem.titleView = UIImageView(image: UIImage(named: "icon_2"))

    let leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_1"), style: UIBarButtonItem.Style.plain, target: target, action: leftAcion)
    //self.navigationItem.setLeftBarButton(leftBarButtonItem, animated: true)
    self.navigationItem.leftBarButtonItem = leftBarButtonItem

    let rightBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_3"), style: UIBarButtonItem.Style.plain, target: target, action: rightAction)
    //self.navigationItem.setRightBarButton(rightBarButtonItem, animated: true)
    self.navigationItem.rightBarButtonItem = rightBarButtonItem
}

}

Всякий раз, когда требуется эта конфигурация, вызывайте этот метод в viewDidLoad()

Надеюсь, это поможет.

...