Быстрая команда для скрытия элемента панели кнопок в ViewController с действием в ContainerView? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть особый вопрос, и я не могу найти ответ по своему делу. У меня есть встроенный ViewController в контроллере навигации с контейнером. В этом Контейнерном Представлении есть scrollView. Что я хочу сделать, так это: когда я прокручиваю свой ContainerView вниз, я хочу, чтобы элемент Bar Button в NavigationContoller из моего ViewController исчез. Когда я прокручиваю вверх, он должен появиться снова.

Я могу скрыть всю панель навигации со следующим кодом, который находится в файле ContainerViewController.swift:

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
    print("123")
    if(velocity.y>0) {
        UIView.animate(withDuration: 0.5, delay: 0, options: UIView.AnimationOptions(), animations: {
            self.navigationController?.setNavigationBarHidden(true, animated: true)
            print("Hide")
        }, completion: nil)

    } else {
        UIView.animate(withDuration: 0.5, delay: 0, options: UIView.AnimationOptions(), animations: {
            self.navigationController?.setNavigationBarHidden(false, animated: true)
            print("Unhide")
        }, completion: nil)
      }

}

Есть ли подобный код это только делает элемент панели кнопок исчезают? Я не знаю, как получить доступ к элементу панели кнопок, потому что не могу подключить его как выход к файлу ContainerViewController.swift, а только к файлу ViewController.swift.

Надеюсь, вы понимаете мой вопрос и могу ответить на него.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Только ViewController может изменять содержимое панели навигации, изменяя содержимое своего собственного navigationItem. Таким образом, вам нужно будет отправить сообщение из ContainerViewController в ViewController (его parent), и ViewController будет делать все, что нужно с его navigationItem.

0 голосов
/ 14 апреля 2020

Вы можете получить доступ к элементам кнопок панели вашего контроллера навигации через свойство navigationItem, равное navigationController. Например, если вы хотите скрыть элемент кнопки левой панели, просто установите navigationController?.navigationItem.leftBarButtonItem.isHidden = true.

...