Почему модификатор .navigationBarTitle не применяется к NavigationView? - PullRequest
8 голосов
/ 08 июня 2019

В SwiftUI я понимаю, что модификаторы используются для изменения представления. При изменении представления модификатор возвращает представление, заключенное в _ModifiedContent.
При встраивании моего представления в NavigationView и назначении заголовка панели навигации, например, так: (как видно из официальных руководств Apple)

NavigationView {
    Text("Hello, World!")
        .navigationBarTitle(Text("My first SwiftUI App"))
}

... почему модификатор заголовка панели навигации применяется к Text, а не к NavigationView?

1 Ответ

5 голосов
/ 09 июня 2019

Как и Мартин , связанный с , navigationBarTitle работает только тогда, когда содержится в NavigationView. Это кратко обсуждается в докладе SwiftUI Essentials в ~ 52:30. Заголовок в конечном итоге перетекает до NavigationView, поэтому выдвигаемые представления также могут предоставлять собственный заголовок (например, представление, выдвигаемое в ~ 54:00).

Если заголовок был прикреплен непосредственно к NavigationView, все возможные заголовки должны быть определены заранее и удалены из представлений, с которыми связаны заголовки.

Это похоже на UIViewController свойство *1013*, которое присоединяется к каждому нажатому представлению вместо самого UINavigationController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...