在SwiftUI中,我知道修饰符用于修改视图。修改视图时,修饰符返回包裹在_ModifiedContent
中的视图。
将我的视图嵌入NavigationView
中并分配导航栏标题时,如下所示:(如Apple的官方教程所示)
NavigationView {
Text("Hello, World!")
.navigationBarTitle(Text("My first SwiftUI App"))
}
...为什么导航栏标题的修饰符应用于Text
,而不应用于NavigationView
?
答案 0 :(得分:5)
像马丁linked to,navigationBarTitle
一样,仅当包含在NavigationView
中时才起作用。在SwiftUI Essentials的〜52:30讨论中对此进行了简要讨论。标题最终流到NavigationView
,因此被推送的视图也可以提供自己的标题(例如,在〜54:00被推送的视图)。
如果标题直接附加到NavigationView
,则需要预先确定所有可能的标题,并将其从与标题关联的视图中删除。
它类似于UIViewController
的{{1}}属性,该属性附加到每个推送视图,而不是navigationItem
本身。
答案 1 :(得分:1)
因为 .navigationBarTitle()
是NavigationView内部的View上的修改器,所以它不在NavigationView上。 .navigationBarItem()
也是这样。
请参阅Building Lists and Navigation