[英]How to display a detailed view on startup for a NavigationView (SwiftUI)
本教程使用NavigationView
來顯示可單擊的元素List
,從而生成詳細視圖LandmarkDetail
。 在 iPhone 上,UI 使用看起來和工作正常的StackNavigationViewStyle()
,但在 iPad 上, NavigationView
顯示在側面。 我希望能夠用詳細視圖填充剩余空間(見下文)。
我試圖在NavigationView
旁邊顯示詳細視圖LandmarkDetail
,如下所示:
var body: some View {
NavigationView {
List {
Toggle(isOn: $showFavoritesOnly) {
Text("Favorites only")
}
ForEach(filteredLandmarks) { landmark in
NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
LandmarkRow(landmark: landmark)
}
}
}
.navigationTitle("Landmarks")
LandmarkDetail(landmark: ModelData().landmarks[0])
}
}
這種方法適用於 iPad,但會在 iPhone 上產生意想不到的結果(重疊瓷磚等)(見下文)。 有沒有更好的方法來達到我想要的結果?
感謝您的幫助,我對潛在的明顯錯誤等表示歉意。這是我第一次使用 SwiftUI,可用資源明顯少於 Android 開發。
創建根據目標設備以編程方式分配NavigationView
樣式的修飾符修復了此問題。
extension View
{
func navigationStyleModification() -> some View
{
if UIDevice.current.userInterfaceIdiom == .phone
{
return AnyView(self.navigationViewStyle(StackNavigationViewStyle()))
} else
{
return AnyView(self.navigationViewStyle(DefaultNavigationViewStyle()))
}
}
}
可以通過以下方式調用修飾符:
NavigationView
{
...
}.navigationStyleModification()
我希望這可以幫助有類似問題的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.