NavigationStack สำหรับ iOS 16 (NavigationView เก่า)

Apr 26 2023
หากแอปของคุณมีเป้าหมายการปรับใช้ขั้นต่ำที่ iOS 16, iPadOS 16, macOS 13, tvOS 16 หรือ watchOS 9 หรือใหม่กว่า ให้เปลี่ยนจากการใช้ NavigationView ใช้อินสแตนซ์ NavigationStack และ NavigationSplitView แทน

หากแอปของคุณมีเป้าหมายการปรับใช้ขั้นต่ำที่ iOS 16, iPadOS 16, macOS 13, tvOS 16 หรือ watchOS 9 หรือใหม่กว่า ให้เลิกใช้NavigationView. ในสถานที่ การใช้งานNavigationStackและNavigationSplitViewอินสแตนซ์

เมื่อคุณเลื่อนลงมาจาก ScrollView แถบสถานะจะซ้อนทับกับเนื้อหา

เพื่อป้องกันไม่ให้เนื้อหาและแถบสถานะทับซ้อนกัน ฉันต้องเพิ่มการนำทางที่ด้านบน หลังจากอัปเดตปี 2022 NavigationView จะเปลี่ยนเป็น NavigationStack และ NavigationSplitView

วิธีง่ายๆ ในการรวมแถบการนำทางเหล่านั้นโดยใช้ NavigationStack คือ

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationStack {
            ScrollView {
                Text("The area is...")
            }
        }
        .navigationTitle("Navigation")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
//This is just for the preview
        NavigationStack { 
            ContentView()
        }
    }
}

แต่ปัญหาที่ฉันมีก็คือ ถ้าฉันไม่ต้องการชื่อของการนำทางล่ะ

ดูเหมือนว่าจะทำงานได้ดีโดยไม่มีชื่อใดๆ สำหรับ NavigationView ก่อนหน้าจากตัวอย่างบทช่วยสอนด้านล่าง

นอกจากนี้ NavigationStack ไม่ทำงานโดยเพิ่มลงใน ContentView

ฉันตรวจสอบแล้วว่าในที่สุดมันก็แสดงหลังจากที่ฉันเขียนไว้ที่แอพเช่นกัน

import SwiftUI

@main
struct TrekrApp: App {
    var body: some Scene {
        WindowGroup {
            NavigationStack {
                ContentView()
            }
        }
    }
}