เหตุใดแอป SwiftUI ของฉันจึงพังเมื่อนำทางด้านหลังหลังจากวาง "NavigationLink" ไว้ใน "navigationBarItems`" ใน "NavigationView"


47

ตัวอย่างที่ทำซ้ำได้น้อยที่สุด (Xcode 11.2 เบต้าทำงานได้ใน Xcode 11.1):

struct Parent: View {
    var body: some View {
        NavigationView {
            Text("Hello World")
                .navigationBarItems(
                    trailing: NavigationLink(destination: Child(), label: { Text("Next") })
                )
        }
    }
}

struct Child: View {
    @Environment(\.presentationMode) var presentation
    var body: some View {
        Text("Hello, World!")
            .navigationBarItems(
                leading: Button(
                    action: {
                        self.presentation.wrappedValue.dismiss()
                    },
                    label: { Text("Back") }
                )
            )
    }
}

struct ContentView: View {
    var body: some View {
        Parent()
    }
}

ปัญหาที่ดูเหมือนว่าจะโกหกในการวางของฉันNavigationLinkภายในnavigationBarItemsปรับปรุงที่อยู่ภายในที่ซ้อนกันในมุมมองของ SwiftUI NavigationViewมีรากมุมมองเป็น รายงานความผิดพลาดแสดงให้เห็นว่าฉันพยายามที่จะปรากฏไปยังตัวควบคุมมุมมองที่ไม่อยู่เมื่อฉันนำทางคอยที่จะแล้วกลับไปChildParent

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'
*** First throw call stack:

ถ้าฉันจะวางที่NavigationLinkในร่างกายของมุมมองเช่นด้านล่างมันทำงานได้ดี

struct Parent: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: Child(), label: { Text("Next") })
        }
    }
}

นี่เป็นข้อบกพร่องของ SwiftUI หรือพฤติกรรมที่คาดหวังหรือไม่?

แก้ไข: ฉันได้เปิดปัญหากับ Apple ในผู้ช่วยติชมด้วย ID FB7423964ในกรณีที่ทุกคนที่นั่นจาก Apple ใส่ใจที่จะชั่งน้ำหนักใน :)

แก้ไข: ตั๋วที่เปิดอยู่ของฉันในตัวช่วยให้ข้อเสนอแนะบ่งชี้ว่ามีปัญหาที่รายงานที่คล้ายกัน 10+ รายการ พวกเขาได้อัปเดตความละเอียดด้วยResolution: Potential fix identified - For a future OS updateแล้ว นิ้วกำลังข้ามที่การแก้ไขจะมาถึงในไม่ช้า

แก้ไข: สิ่งนี้ได้รับการแก้ไขใน iOS 13.3!


ตัวอย่างที่คุณให้ไว้ข้างต้นใช้งานได้ดีกับ Xcode 11.2 เบต้า พวกเราขาดอะไรบางอย่างที่นี่?
Subramanian Mariappan

@SubramanianMariappan มันใช้ได้ดีสำหรับฉันเช่นกันในรุ่นเบต้า 11.2
Farhan Amjad

1
น่าสนใจมันทำให้ฉันล้มเหลวทุกครั้ง ContentView.swiftผมก็พยายามสร้างโครงการสดและคัดลอกโค้ดที่แน่นอนในสถานที่ของ ฉันจะแก้ไขโพสต์ แต่ความผิดพลาดจะเกิดขึ้นเฉพาะเมื่อคุณนำทางไปข้างหน้าและย้อนกลับ
Robert

เป็นคำถามที่ดีมาก! ตัวอย่างของคุณที่นี่ขัดข้องสำหรับฉันทุกครั้งเช่นกัน ฉันเพิ่งโพสต์คำตอบใหม่ที่ทำงานได้ดีมากสำหรับฉัน แจ้งให้เราทราบหากมันเหมาะกับคุณเช่นกัน ขอบคุณ
Chuck H

1
ขอบคุณสำหรับการอัปเดตเกี่ยวกับตั๋วแอปเปิ้ล!
malte

คำตอบ:


20

นี่เป็นจุดที่เจ็บปวดสำหรับฉัน! ฉันทิ้งไว้จนกระทั่งส่วนใหญ่ของแอปของฉันเสร็จสมบูรณ์และฉันมีพื้นที่ใจที่จะจัดการกับความล้มเหลว

ฉันคิดว่าเราทุกคนสามารถยอมรับว่ามีบางสิ่งที่ยอดเยี่ยมกับ SwifUI แต่การดีบักอาจเป็นเรื่องยาก

ในความคิดของฉันฉันจะบอกว่านี่เป็นข้อผิดพลาด นี่คือเหตุผลของฉัน:

  • หากคุณปิด PresentationMode ให้ยกเลิกการเรียกในการหน่วงเวลาแบบอะซิงโครนัสประมาณครึ่งวินาทีคุณควรพบว่าโปรแกรมจะไม่ทำงานผิดพลาดอีกต่อไป

    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
        self.presentationMode.wrappedValue.dismiss()
    } 
  • สิ่งนี้ชี้ให้เห็นว่าข้อผิดพลาดเป็นพฤติกรรมที่ไม่คาดคิดที่ลึกลงไปในส่วนต่อประสาน SwiftUI กับรหัส UIKit อื่น ๆ ทั้งหมดเพื่อจัดการมุมมองที่หลากหลาย ขึ้นอยู่กับรหัสจริงของคุณคุณอาจพบว่าหากมีความซับซ้อนเล็กน้อยในมุมมองความผิดพลาดจะไม่เกิดขึ้นจริง ตัวอย่างเช่นหากคุณกำลังยกเลิกจากมุมมองไปยังมุมมองหนึ่งที่มีรายการและรายการนั้นว่างเปล่าคุณจะได้รับข้อผิดพลาดโดยไม่ล่าช้าแบบอะซิงโครนัส ในทางกลับกันถ้าคุณมีเพียงหนึ่งรายการในมุมมองรายการนั้นบังคับให้วนซ้ำเพื่อสร้างมุมมองหลักคุณจะเห็นว่าข้อผิดพลาดจะไม่เกิดขึ้น

ฉันไม่แน่ใจว่าโซลูชันของฉันในการตัดการโทรออกล่าช้านั้นมีประสิทธิภาพเพียงใด ฉันต้องทดสอบมันมากกว่านี้ หากคุณมีความคิดเกี่ยวกับเรื่องนี้โปรดแจ้งให้เราทราบ! ฉันมีความสุขมากที่ได้เรียนรู้จากคุณ!


1
ฉลาดมาก! ฉันไม่ได้คิดอย่างนั้น หวังว่าจะได้รับการแก้ไขในเร็ว ๆ นี้!
Robert

1
@ Robert มันแก้ไขปัญหาของคุณหรือไม่ นี่เป็นปัญหาที่ยากเนื่องจากปัญหาที่ไม่เกี่ยวข้องซึ่งฉันพบคือการใช้ตัวเลือกภายในมุมมองการนำทางลูก ในขณะที่รูปแบบตัวเลือกแบ่งใช้งานได้ค่าเริ่มต้นจะทำให้เกิดความผิดพลาดที่จุดเดียวกันเมื่อคลิกปุ่มย้อนกลับ เราสามารถพูดคุยเพิ่มเติมได้ถ้ามันยังทำให้คุณเศร้าโศก PS ฉันเกลียดทางออกของฉัน มันเป็นแฮ็ค แต่เป็นสิ่งที่ไม่ควรต้องมีการอัพเดทโค้ดหาก Apple แก้ไขปัญหาเรื่องเวลา
Justin Ngan

2
ฉันยอมรับว่าแง่มุมเวลาพร้อมกับความจริงที่ว่ามันทำงานได้ดีใน 11.1 และทำงานนอก.navigationBarItems()ประเด็นเพื่อเป็นข้อบกพร่อง
John M.

3
ใช่ฉันเชื่อว่ามันเป็นข้อผิดพลาดและนี่คือผู้สมัครชั้นนำปัจจุบันของฉันสำหรับรางวัลความโปรดปราน เนื่องจากฉันมีเวลาเหลือ 4 วันในช่วงเวลาของการเขียนนี้ฉันแค่ถือมันไว้ในกรณีที่ทุกคนมาพร้อมกับข้อมูลใหม่ :)
Robert

1
นี่เป็นเคล็ดลับที่น่าสนใจมากขอบคุณมากสำหรับสิ่งนั้น! น่าเสียดายที่ฉันยังคงพังแอพได้อย่างน่าเชื่อถือในตัวจำลอง 100% ของเวลา: / มันใช้งานได้ดีกว่าบนอุปกรณ์ แต่ไม่สามารถทำได้โดยไม่ล้มเหลวเลย แต่นั่นก็เป็นกรณีที่ไม่มีความล่าช้า
Kilian

15

เรื่องนี้ก็ทำให้ฉันผิดหวังมาระยะหนึ่งแล้ว ในช่วงไม่กี่เดือนที่ผ่านมาขึ้นอยู่กับรุ่น Xcode รุ่นเครื่องมือจำลองและประเภทอุปกรณ์จริงและ / หรือรุ่นมันได้หยุดทำงานเพื่อล้มเหลวในการทำงานอีกครั้งดูเหมือนสุ่ม อย่างไรก็ตามเมื่อเร็ว ๆ นี้มันล้มเหลวอย่างต่อเนื่องสำหรับฉันดังนั้นเมื่อวานนี้ฉันจึงดำดิ่งลงไป ฉันกำลังใช้ Xcode เวอร์ชัน 11.2.1 (11B500)

ดูเหมือนว่าปัญหาจะเกิดขึ้นรอบ ๆ Nav Bar และวิธีที่ปุ่มถูกเพิ่มเข้าไป ดังนั้นแทนที่จะใช้ NavigationLink () สำหรับปุ่มตัวเองฉันลองใช้ปุ่มมาตรฐาน () ด้วยการกระทำที่ตั้ง @State var ที่เปิดใช้งาน NavigationLink ที่ซ่อนอยู่ นี่คือการแทนที่สำหรับมุมมองหลักของ Robert:

struct Parent: View {
    @State private var showingChildView = false
    var body: some View {
        NavigationView {
            VStack {
                Text("Hello World")
                NavigationLink(destination: Child(),
                               isActive: self.$showingChildView)
                { EmptyView() }
                    .frame(width: 0, height: 0)
                    .disabled(true)
                    .hidden()            
             }
             .navigationBarItems(
                 trailing: Button(action:{ self.showingChildView = true }) { Text("Next") }
             )
        }
    }
}

สำหรับฉันมันใช้งานได้อย่างสม่ำเสมอกับอุปกรณ์จำลองและอุปกรณ์จริงทั้งหมด

นี่คือมุมมองผู้ช่วยของฉัน:

struct HiddenNavigationLink<Destination : View>: View {

    public var destination:  Destination
    public var isActive: Binding<Bool>

    var body: some View {

        NavigationLink(destination: self.destination, isActive: self.isActive)
        { EmptyView() }
            .frame(width: 0, height: 0)
            .disabled(true)
            .hidden()
    }
}

struct ActivateButton<Label> : View where Label : View {

    public var activates: Binding<Bool>
    public var label: Label

    public init(activates: Binding<Bool>, @ViewBuilder label: () -> Label) {
        self.activates = activates
        self.label = label()
    }

    var body: some View {
        Button(action: { self.activates.wrappedValue = true }, label: { self.label } )
    }
}

นี่คือตัวอย่างของการใช้งาน:

struct ContentView: View {
    @State private var showingAddView: Bool = false
    var body: some View {
        NavigationView {
            VStack {
                Text("Hello, World!")
                HiddenNavigationLink(destination: AddView(), isActive: self.$showingAddView)
            }
            .navigationBarItems(trailing:
                HStack {
                    ActivateButton(activates: self.$showingAddView) { Image(uiImage: UIImage(systemName: "plus")!) }
                    EditButton()
            } )
        }
    }
}

ฉันสามารถยืนยันการทำงานนี้ (ดีจริงๆสำหรับแฮ็ค ;-))! แอปเปิ้ลต้องแก้ไขโดยเร็วนี้ว่า Xcode 11.2.1, Catalina 10.15.2 (เบต้า), iOS 13.2.2
P. Ent

1
ฉันเห็นด้วย 100% โดยทั่วไปเกี่ยวกับการนำทางใน SwiftUI มีจำนวนมากที่แตกหักหรือหายไปเพียงธรรมดา หลักสูตรใดที่ทำให้เราพบกับปัญหาจริง ไม่มี "แหล่งที่มาของความจริง" (เช่นเอกสารและตัวอย่าง) จาก Apple มีแฮ็กอย่างเราเท่านั้น BTW ฉันใช้เทคนิคด้านบนมากฉันได้สร้างมุมมองยูทิลิตี้สองแห่งที่ช่วยให้อ่านได้มาก ฉันจะเพิ่มพวกเขาในคำตอบของฉันในกรณีที่ใครสนใจ
Chuck H

ขอบคุณสำหรับการแก้ปัญหามันใช้งานได้!
Stanislav Poslavsky

1
สิ่งนี้ใช้ไม่ได้สำหรับฉันในการนำทางมากกว่าหนึ่งรายการ เมื่อคุณกลับไปที่หน้าจอก่อนหน้าลิงค์ที่มองไม่เห็นจะไม่ทำงานอีกต่อไป
Jon

1
ฉันมีอุปกรณ์จริงหลายตัวที่ 13.3 (สร้าง 17C54) และพวกเขาทั้งหมดทำงานตามที่ต้องการ เนื่องจากฉันทำการทดสอบเกือบทั้งหมดกับอุปกรณ์จริงฉันจึงไม่ใช้ตัวจำลองบ่อยนัก แต่ฉันเพิ่งลองกรณีทดสอบของฉันในโปรแกรมจำลอง 13.3 และการทดสอบล้มเหลว ฉันสังเกตเห็นว่า iOS 13.3 บนตัวจำลอง Xcode เป็นรุ่นก่อนหน้า (17C45) กว่าการอัปเดตสาธารณะ ฉันสนใจที่จะรู้ว่ามีใครสังเกตพฤติกรรมที่ล้มเหลวในอุปกรณ์จริงหรือไม่
Chuck H

12

นี่เป็นข้อผิดพลาดที่สำคัญและฉันไม่เห็นวิธีที่เหมาะสมในการแก้ไข ทำงานได้ดีใน iOS 13/13.1 แต่เกิดข้อขัดข้อง 13.2

คุณสามารถทำซ้ำได้จริง ๆ ในวิธีที่ง่ายกว่ามาก (รหัสนี้เป็นสิ่งที่คุณต้องการจริงๆ)

struct ContentView: View {
    var body: some View {
        NavigationView {
            Text("Hello, World!").navigationBarTitle("To Do App")
                .navigationBarItems(leading: NavigationLink(destination: Text("Hi")) {
                    Text("Nav")
                    }
            )
        }
    }
}

หวังว่า Apple จะแยกออกเพราะจะทำให้แอพ SwiftUI แตกหัก (รวมถึงของฉัน)


ฮ่าฮ่า ... มันเยี่ยมมาก คุณได้ไปที่มุมมองข้อความซึ่งใน SwiftUI เป็นมุมมอง! ใช่ว่าควรนำทางกลับไปที่ผู้ปกครองมันไม่ควรหรือไม่ แต่มันก็ไม่เป็นเช่นนั้น เป็นที่น่าสนใจว่าพฤติกรรมจากตัวอย่างของคุณแบ่ง UI แต่ไม่ได้ทำให้เกิดความผิดพลาดร้ายแรง
Justin Ngan

ใช่การแต่งเพลงของ SwiftUI (และ React Native / Flutter เป็นต้น) นั้นยอดเยี่ยมมาก ให้การควบคุม / ความยืดหยุ่นแก่คุณอย่างมาก (เมื่อทำงานอย่างน้อย)
James

1
ยืนยันการล่มใน Catalina (10.15.1), Xcode (11.2.1), iOS (13.2.2)
P. Ent

มันไม่ล่มใน 13.3 อีกต่อไปอย่างไรก็ตามการนำทางดูเหมือนว่าจะทำงานในครั้งแรกที่คุณเรียกใช้ 🤦‍♂️
James

6

ในฐานะที่เป็นวิธีแก้ปัญหาตามคำตอบของ Chuck H ด้านบนฉันได้ห่อหุ้ม NavigationLink ไว้เป็นองค์ประกอบที่ซ่อนอยู่:

struct HiddenNavigationLink<Content: View>: View {
var destination: Content
@Binding var activateLink: Bool

var body: some View {
    NavigationLink(destination: destination, isActive: self.$activateLink) {
        EmptyView()
    }
    .frame(width: 0, height: 0)
    .disabled(true)
    .hidden()
}
}

จากนั้นคุณสามารถใช้ภายใน NavigationView (ซึ่งเป็นสิ่งสำคัญ) และเรียกใช้จากปุ่มในแถบนำทาง:

VStack {
    HiddenNavigationList(destination: SearchView(), activateLink: self.$searchActivated)
    ...
}
.navigationBarItems(trailing: 
    Button("Search") { self.searchActivated = true }
)

ปิดล้อมในความคิดเห็น "// HACK" ดังนั้นเมื่อ Apple แก้ไขสิ่งนี้คุณสามารถแทนที่ได้


ดูเหมือนว่าจะใช้งานได้เฉพาะในการใช้งานครั้งแรกใน iOS 13.3
James

3

จากข้อมูลที่คุณให้และความคิดเห็นเป็นพิเศษที่ @Robert ทำเกี่ยวกับตำแหน่งที่วาง NavigationView ฉันได้พบวิธีแก้ไขปัญหาอย่างน้อยในสถานการณ์เฉพาะของฉัน

ในกรณีของฉันฉันมี TabView ที่อยู่ใน NavigationView แบบนี้:

struct ContentViewThatCrashes: View {
@State private var selection = 0

var body: some View {
    NavigationView{
        TabView(selection: $selection){
            NavigationLink(destination: NewView()){
                Text("First View")
                    .font(.title)
            }
            .tabItem {
                VStack {
                    Image("first")
                    Text("First")
                }
            }
            .tag(0)
            NavigationLink(destination: NewView()){
                Text("Second View")
                    .font(.title)
            }
            .tabItem {
                VStack {
                    Image("second")
                    Text("Second")
                }
            }
            .tag(1)
        }
    }
  }
}

รหัสนี้ขัดข้องเนื่องจากทุกคนรายงานใน iOS 13.2 และทำงานใน iOS 13.1 หลังจากการวิจัยฉันพบวิธีแก้ปัญหาสำหรับสถานการณ์นี้

โดยพื้นฐานแล้วฉันกำลังย้าย NavigationView ไปยังแต่ละหน้าจอแยกกันในแต่ละแท็บเช่นนี้:

struct ContentViewThatWorks: View {
@State private var selection = 0

var body: some View {
    TabView(selection: $selection){
        NavigationView{
            NavigationLink(destination: NewView()){
                Text("First View")
                    .font(.title)
            }
        }
        .tabItem {
            VStack {
                Image("first")
                Text("First")
            }
        }
        .tag(0)
        NavigationView{
            NavigationLink(destination: NewView()){
                Text("Second View")
                    .font(.title)
            }
        }
        .tabItem {
            VStack {
                Image("second")
                Text("Second")
            }
        }
        .tag(1)
    }
  }
}

ยังไงก็เถอะกับความเรียบง่ายของ SwiftUI แต่มันใช้งานได้กับ iOS 13.2


ใช้งานได้ แต่ปัญหาคือการลบแท็บมุมมองบน NewView
FRIDDAY

1
@FRIDDAY ตัวอย่างนี้ใช้งานได้ใน 13.1 แต่ล่มใน 13.2 เป็นข้อผิดพลาดที่รู้จักและความตั้งใจของฉันคือการพยายามช่วยใครบางคนในสถานการณ์เดียวกันด้วยวิธีแก้ปัญหา
Julio Bailon

1

Xcode 11.2.1 Swift 5

ได้มัน! ฉันใช้เวลาสองสามวันกว่าจะหาอันนี้ ...

ในกรณีของฉันเมื่อใช้ SwiftUI ฉันได้รับความผิดพลาดเฉพาะเมื่อด้านล่างของรายการของฉันขยายออกไปนอกหน้าจอจากนั้นฉันพยายาม "ย้าย" รายการใด ๆ สิ่งที่ฉันพบคือถ้าฉันมี "สิ่งของ" มากเกินไปในรายการ () ก็จะเกิดปัญหาขณะเดินทาง ตัวอย่างเช่นใต้รายการของฉัน () ฉันมีข้อความ (), ตัวเว้นวรรค (), ปุ่ม (), ปุ่มตัวเว้นวรรค () หากฉันแสดงความคิดเห็นวัตถุใดวัตถุหนึ่งเหล่านั้นทันใดนั้นฉันก็ไม่สามารถสร้างความผิดพลาดได้อีก ฉันไม่แน่ใจว่าข้อ จำกัด คืออะไร แต่ถ้าคุณได้รับข้อผิดพลาดนี้ให้ลองลบวัตถุด้านล่างรายการเพื่อดูว่ามันช่วยได้หรือไม่


0

แม้ว่าฉันจะไม่เห็นข้อผิดพลาดใด ๆ รหัสของคุณมีปัญหาบางอย่าง:

โดยการตั้งค่ารายการนำคุณจริง ๆ แล้วฆ่าลักษณะการทำงานเริ่มต้นของการเปลี่ยนการนำทาง (ลองปัดจากด้านนำเพื่อดูว่าใช้ได้หรือไม่)

ดังนั้นไม่จำเป็นต้องมีปุ่ม เพียงแค่ปล่อยให้มันเป็นและคุณมีปุ่มย้อนกลับฟรี

และอย่าลืมตามHIGชื่อปุ่มย้อนกลับควรแสดงตำแหน่งที่มันไปไม่ใช่ว่ามันคืออะไร! ดังนั้นพยายามตั้งชื่อสำหรับหน้าแรกให้แสดงปุ่มย้อนกลับที่ปรากฏ

struct Parent: View {
    var body: some View {
        NavigationView {
            Text("Hello World")
                .navigationBarItems(
                    trailing: NavigationLink(destination: Child(), label: { Text("Next") })
                )
                .navigationBarTitle("First Page",displayMode: .inline)
        }
    }
}

struct Child: View {
    @Environment(\.presentationMode) var presentation
    var body: some View {
        Text("Hello, World!")
    }
}

struct ContentView: View {
    var body: some View {
        Parent()
    }
}

1
เฮ้ขอบคุณสำหรับคำตอบ ในขณะที่ฉันยอมรับว่าการปล่อยปุ่มย้อนกลับเป็นค่าเริ่มต้นเป็นสิ่งที่ต้องการ
Robert

คุณใช้เวอร์ชั่นอะไร ฉันได้ทำการทดสอบก่อนส่ง บางทีคุณอาจมีปัญหาอื่น คุณช่วยเสนอโครงการตัวอย่างได้ไหม?
Mojtaba Hosseini

1
Xcode 11.2 เบต้าเหมือนคำถามที่บอก ตัวอย่างที่ฉันให้ไว้ในคำถามคือทั้งหมดที่คุณต้องทำซ้ำความผิดพลาด
Robert

ฉันใช้รุ่นเดียวกันและรหัสเดียวกัน แต่ไม่มีข้อขัดข้อง🤔
Mojtaba Hosseini

1
ยืนยันการล่มใน Catalina (10.15.1), Xcode (11.2.1), iOS (13.2.2)
P. Ent

0

FWIW - วิธีแก้ปัญหาด้านบนที่แนะนำการนำทาง NavigationLink Hack ที่ซ่อนอยู่นั้นยังคงเป็นวิธีการแก้ปัญหาที่ดีที่สุดใน iOS 13.3b3 ฉันยังได้ยื่น FB7386339 เพื่อเห็นแก่ลูกหลานและถูกปิดในทำนองเดียวกันกับ FBs ข้างต้นอื่น ๆ : "การแก้ไขที่เป็นไปได้ที่ระบุ - สำหรับการอัปเดตระบบปฏิบัติการในอนาคต"

ไขว้นิ้วเอาไว้.


กรุณาหลีกเลี่ยงการเพิ่มความคิดเห็นเป็นคำตอบ
Karthick Ramesh

0

แก้ไขได้ใน iOS 13.3 เพียงอัปเดตระบบปฏิบัติการและ xCode ของคุณ


1
Xcode 11.3 (11C29) วันที่ 10.15.2 ผลลัพธ์ในพฤติกรรมที่แตกต่างกันสำหรับฉัน: การนำทางด้านหลังทำงานได้ แต่หลังจากนั้น NavigationLink ไม่มีฟังก์ชั่นอีกต่อไป คลิกที่มันไม่ทำอะไรเลย
มัลเต้

@malte ดีกว่าที่จะเปิดคำถามใหม่สำหรับสิ่งนั้น ก่อนที่ฉันจะตรวจสอบรหัสของคุณให้.buttonStyle(PlainButtonStyle())ตัวปรับเปลี่ยนNavigationLink ของคุณและลองอีกครั้ง แจ้งให้เราทราบหากคุณถามคำถาม
FRIDDAY

1
คุณถูก. ปรากฎว่ามีคำถามใหม่อยู่แล้ว: stackoverflow.com/questions/59279176/…
malte
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.