Как настроить панель навигации и панель вкладок как проход через представления UIPopoverViewController?

У меня есть собственный UIViewController как PopoverViewController, и когда я его представляю, я не могу коснуться панели навигации и панели вкладок.

У меня есть поиск while, и я получил: При подготовке (для перехода: UIStoryboardSegue, отправитель: Any?) первого кода ViewController:

if segue.identifier == "ShowChoice"{
      let poper = segue.destination
      poper.modalPresentationStyle = .popover
      poper.popoverPresentationController?.delegate = self
      let point = CGPoint(x: self.view.bounds.midX, y: self.view.bounds.midY + 5)
      poper.popoverPresentationController?.sourceView = self.view
      poper.popoverPresentationController?.sourceRect = CGRect(origin: point, size: CGSize.zero)
      poper.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)

//here I set [self.view] to passthroughViews and it work i can interact with all thing in self.view but I can't interact with Navigation Button or Tab bar item!

            poper.popoverPresentationController?.passthroughViews = [self.view]
        }
    }

Я могу установить только UIView для passthroughViews, но я хочу установить панель навигации или панель вкладок

спасибо!


person Hongky Lieng    schedule 12.01.2018    source источник
comment
Вы должны показать немного больше контекста (больше кода), так как это отлично работает для меня. Из вашей строки кода мы не можем сказать, откуда вы пытаетесь установить это или все ли правильно подключено.   -  person Terje    schedule 12.01.2018
comment
@Terje Я обновил Не могли бы вы взглянуть?   -  person Hongky Lieng    schedule 12.01.2018


Ответы (2)


Наконец-то я нашел это самостоятельно, просто приведя [self.tabBarController?.tabBar,self.navigationController?.navigationBar] к [UIView]

poper.popoverPresentationController?.passthroughViews = [self.tabBarController?.tabBar,self.navigationController?.navigationBar] as! [UIView]
person Hongky Lieng    schedule 15.01.2018

Интересно, что порядок элементов внутри popoverPresentationController.passthroughViews имеет значение!

Например, если вы хотите добавить все свои представления И панель навигации, вы ДОЛЖНЫ поместить панель навигации в начало списка, иначе касания будут просто переданы любому элементу, находящемуся под ней.

Вот мой код:

 popoverPresentationController.passthroughViews = [self.view]
 if let navBar = self.navigationController?.navigationBar {
     popoverPresentationController.passthroughViews?.insert(navBar, at: 0)
 }

Кроме того, не забудьте закрыть popoverView, если вы делаете это для возможности использовать кнопку «Назад».

person Community    schedule 12.09.2019