คำถามติดแท็ก swiftui-navigationlink

6
SwiftUI - วิธีการหลีกเลี่ยงการนำฮาร์ดโค้ดลงในมุมมอง
ฉันพยายามทำสถาปัตยกรรมสำหรับแอป SwiftUI ที่มีขนาดใหญ่ขึ้นและพร้อมใช้งาน ฉันใช้เวลาทั้งหมดในปัญหาเดียวกันซึ่งชี้ไปที่ข้อบกพร่องการออกแบบที่สำคัญใน SwiftUI ยังไม่มีใครสามารถให้คำตอบที่พร้อมสำหรับการทำงานอย่างเต็มที่กับฉันได้ วิธีการใช้ซ้ำ Views ในSwiftUIที่มีการนำทาง? เนื่องจากความSwiftUI NavigationLinkผูกพันกับมุมมองอย่างมากจึงไม่สามารถทำได้ในลักษณะที่ปรับขนาดในแอปที่ใหญ่กว่า NavigationLinkในแอปตัวอย่างขนาดเล็กเหล่านั้นทำงานได้ใช่ - แต่ไม่ใช่ทันทีที่คุณต้องการใช้ Views จำนวนมากในแอปเดียว และอาจนำมาใช้ซ้ำเกินขอบเขตของโมดูล (เช่น: ใช้การดูซ้ำใน iOS, WatchOS, ฯลฯ ... ) ปัญหาการออกแบบ: NavigationLinks ถูกฮาร์ดโค้ดลงในมุมมอง NavigationLink(destination: MyCustomView(item: item)) แต่ถ้ามุมมองที่มีสิ่งนี้NavigationLinkควรจะนำมาใช้ซ้ำฉันไม่สามารถ hardcodeปลายทางได้ จะต้องมีกลไกที่ให้ปลายทาง ฉันถามที่นี่และได้คำตอบที่ดี แต่ก็ยังไม่ได้คำตอบทั้งหมด: SwiftUI MVVM ผู้ประสานงาน / เราเตอร์ / NavigationLink แนวคิดคือการฉีดลิงค์ปลายทางลงในมุมมองที่นำมาใช้ซ้ำได้ โดยทั่วไปแล้วความคิดนี้ใช้งานได้ แต่น่าเสียดายที่นี่ไม่ได้ปรับใช้กับแอปการผลิตจริง ทันทีที่ฉันมีหน้าจอที่ใช้ซ้ำได้หลายหน้าจอฉันพบปัญหาตรรกะที่มุมมองที่นำมาใช้ซ้ำได้หนึ่งรายการ ( ViewA) ต้องมีมุมมองปลายทางที่กำหนดไว้ล่วงหน้า ( …

1
NavigationLink หยุดทำงานเมื่อพยายามเข้าชม NavigationLink ก่อนหน้านี้อีกครั้งใน SwiftUI
ฉันกำลังออกแบบแอพที่มีฟังก์ชั่นในการดึงข้อมูล JSON และแสดงรายการของรายการที่ดึงข้อมูลในมุมมองประเภท FileBrowser ในมุมมองนี้ผู้ใช้ควรสามารถคลิกที่โฟลเดอร์เพื่อดำดิ่งลึกลงไปในแผนผังไฟล์หรือคลิกที่ไฟล์เพื่อดูข้อมูลเมตาบางส่วนเกี่ยวกับไฟล์ดังกล่าว ฉันสังเกตว่าขณะที่สิ่งนี้ใช้งานได้เมื่อฉันคลิกที่ไฟล์หรือโฟลเดอร์จากนั้นย้อนกลับไปคลิกอีกครั้ง NavigationLink ไม่ทำงานและฉันติดอยู่ที่มุมมองจนกว่าฉันจะคลิกไปที่ NavigationLink อื่น นี่คือ gif ที่แสดงให้เห็นถึงปัญหานี้ เท่าที่เห็นที่นี่เมื่อฉันคลิกที่ BlahBlah ฉันกำลังเปิดใช้งาน NavigationLink และนำไปที่ BlahBlah จากนั้นเมื่อฉันนำทางกลับไปและพยายามที่จะลบล้างไปที่ BlahBlah มันจะกลายเป็นสีเทาลงทะเบียนว่าฉันคลิกที่มัน ... . การคลิกที่ TestFile แก้ไขปัญหานี้และอนุญาตให้ฉันนำทางกลับไปที่ BlahBlah มีการสร้างไอเท็มรายการด้วยโครงสร้างต่อไปนี้ private struct FileCell{ var FileName: String var FileType: String var FileID: String = "" var isContainer: Bool } private struct constructedCell: …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.