Как ссылаться на текущее представление в контроллере представления навигации

#swift

#swift

Вопрос:

У меня есть конструктор убеждения, который создает подвиды

 class HudView: UIView {
  var text = ""

  class func hud(inView view: UIView, 
                    animated: Bool) -> HudView {
    let hudView = HudView(frame: view.bounds)
    view.addSubview(hudView)
    
    return hudView
  }
}
  

Чтобы использовать вышесказанное и создать представление, я делаю следующее:

 let hudView = HudView.hud(inView: navigationController!.view, 
                          animated: true)
  

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

Комментарии:

1. Вы задаете слишком много вопросов. Можете ли вы задать один вопрос для каждого сообщения?

Ответ №1:

Из текущего представления я предполагаю, что вы имеете в виду view из ViewController , которые в данный момент видны в navigationController .

Вы можете получить текущее видимое view вот так,

 if let view = navigationController?.viewControllers.first?.view {
    let hudView = HudView.hud(inView: view, animated: true)
}
  

И, если вы пишете этот код в текущем видимом ViewController , вы можете просто использовать self.view вместо этого.

 let hudView = HudView.hud(inView: self.view, animated: true)
  

Комментарии:

1. Если у меня есть представление, встроенное в навигационный контроллер, является ли это представление подвидом навигационного контроллера?

2. вы встраиваете контроллеры просмотра в навигационный контроллер, а не только в представление.

3. Еще один последний вопрос здесь? Я хочу создать вспомогательный вид, который охватывает вид контроллера представления и панель навигации над ним. Это то, что меня смущает. В каком виде находится панель навигации (кнопка «Назад», заголовок, кнопка «Готово»). Спасибо! Есть ли у Навигационного контроллера представление?

4. Контроллер навигации встраивает контроллер представления, в котором есть представление. Навигационный контроллер — это своего рода просто контейнер. Итак, добавьте свое представление внутри контроллера представления.

5. Я, наконец, понял это. Спасибо!