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

SwiftUI เป็น Swift API ที่เปิดเผยของ Apple สำหรับการกำหนดส่วนต่อประสานผู้ใช้แบบกราฟิก ใช้แท็กนี้สำหรับคำถามเกี่ยวกับ SwiftUI ในทุกแพลตฟอร์ม

3
SwiftUI: วิธีจัดการกับการแตะทั้งสอง & การกดปุ่มค้างนาน ๆ ?
ฉันมีปุ่มใน SwiftUI และฉันต้องการที่จะสามารถดำเนินการที่แตกต่างกันสำหรับ "ปุ่มแตะ" (คลิก / แตะปกติ) และ "กดแบบยาว" เป็นไปได้ใน SwiftUI หรือไม่ นี่คือรหัสง่ายๆสำหรับปุ่มที่ฉันมีตอนนี้ (จัดการเฉพาะกรณีแตะ / สัมผัส "ปกติ") Button(action: {self.BLEinfo.startScan() }) { Text("Scan") } .disabled(self.BLEinfo.isScanning) ฉันได้ลองเพิ่ม "ท่าทางกดยาว" แล้ว แต่ก็ยัง "กดปุ่ม" ปกติ / สั้น "เท่านั้น นี่คือรหัสที่ฉันพยายาม: Button(action: {self.BLEinfo.startScan() }) { Text("Scan") .fontWeight(.regular) .font(.body) .gesture( LongPressGesture(minimumDuration: 2) .onEnded { _ in print("Pressed!") } …

2
ฉันจะเพิ่มแถบเครื่องมือลงในแอป macOS โดยใช้ SwiftUI ได้อย่างไร
ฉันกำลังพยายามเพิ่มแถบเครื่องมือภายในแถบชื่อเรื่องไปยังแอป macOS โดยใช้ SwiftUI สิ่งที่คล้ายกับที่แสดงด้านล่าง ฉันไม่สามารถหาวิธีที่จะทำให้บรรลุผลได้โดยใช้ SwiftUI ขณะนี้ฉันมีแถบเครื่องมือของฉัน (ซึ่งเพิ่งมีฟิลด์ข้อความ) ในมุมมองของฉัน แต่ฉันต้องการย้ายไปไว้ที่แถบชื่อเรื่อง รหัสปัจจุบันของฉัน: struct TestView: View { var body: some View { VStack { TextField("Placeholder", text: .constant("")).padding() Spacer() } } } ดังนั้นในกรณีของฉันฉันต้องมีฟิลด์ข้อความในแถบเครื่องมือ

1
ถูกต้องหรือไม่หากคาดว่าการอัปเดตภายในของเครื่องห่อคุณสมบัติ SwiftUI DynamicProperty เพื่อเรียกการอัปเดตมุมมอง
ฉันกำลังพยายามสร้าง wrapper คุณสมบัติที่กำหนดเองที่สนับสนุนโดย SwiftUI ซึ่งหมายความว่าการเปลี่ยนแปลงค่าคุณสมบัติที่สอดคล้องกันจะทำให้การอัปเดตเป็นมุมมอง SwiftUI นี่คือเวอร์ชั่นที่เรียบง่ายของสิ่งที่ฉันมี: @propertyWrapper public struct Foo: DynamicProperty { @ObservedObject var observed: SomeObservedObject public var wrappedValue: [SomeValue] { return observed.value } } ฉันเห็นว่าแม้ว่าฉันObservedObjectจะอยู่ภายในเสื้อคลุมคุณสมบัติที่กำหนดเองของฉัน SwiftUI ยังคงจับการเปลี่ยนแปลงSomeObservedObjectตราบใดที่: เสื้อคลุมทรัพย์สินของฉันเป็น struct เครื่องห่อคุณสมบัติของฉันเป็นไปตาม DynamicProperty โชคไม่ดีที่เอกสารเหล่านั้นกระจัดกระจายและฉันมีเวลาบอกได้ยากว่ามันจะโชคดีแค่ไหนกับการใช้งาน SwiftUI ในปัจจุบัน DynamicPropertyดูเหมือนว่าเอกสารของ(ภายใน Xcode ไม่ใช่ออนไลน์) แสดงว่าคุณสมบัติดังกล่าวเป็นคุณสมบัติที่มีการเปลี่ยนแปลงจากภายนอกทำให้มุมมองการวาดใหม่ แต่ไม่มีการรับประกันเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อคุณปฏิบัติตามประเภทของคุณกับโปรโตคอลนี้ ฉันคาดหวังได้ไหมว่าสิ่งนี้จะทำงานต่อไปในอนาคตของ SwiftUI

1
ฉันจะตรวจสอบคลิกขวาใน SwiftUI ได้อย่างไร
ฉันกำลังเขียนแอพ Mines ง่ายๆเพื่อช่วยให้ฉันรู้จัก SwiftUI ด้วยเหตุนี้ฉันต้องการคลิกหลัก (ปกติคือ LMB) เพื่อ "ขุด" (เปิดเผยว่ามีของฉันอยู่ที่นั่นหรือไม่) และคลิกรอง (โดยทั่วไปคือ RMB) เพื่อวางธง ฉันขุดได้แล้ว! แต่ฉันไม่สามารถหาวิธีวางธงได้เพราะฉันไม่สามารถหาวิธีตรวจจับการคลิกรองได้ นี่คือสิ่งที่ฉันพยายาม : BoardSquareView( style: self.style(for: square), model: square ) .gesture(TapGesture().modifiers(.control).onEnded(self.handleUserDidAltTap(square))) .gesture(TapGesture().onEnded(self.handleUserDidTap(square))) ดังที่ได้กล่าวไว้ก่อนหน้านี้ฟังก์ชั่นที่ส่งกลับโดยhandleUserDidTapเรียกว่าถูกต้องเมื่อคลิก แต่ฟังก์ชั่นที่ส่งกลับโดยจะถูกhandleUserDidAltTapเรียกเฉพาะเมื่อฉันกดปุ่มควบคุมค้างไว้ นั่นเป็นเหตุผลเพราะมันคือรหัสที่บอกว่า ... แต่ฉันไม่เห็น API ใดที่ทำให้ลงทะเบียนการคลิกรองดังนั้นฉันไม่รู้ว่าจะต้องทำอะไรอีก ฉันลองสิ่งนี้ด้วย แต่พฤติกรรมก็เหมือนกัน: BoardSquareView( style: self.style(for: square), model: square ) .gesture(TapGesture().modifiers(.control).onEnded(self.handleUserDidAltTap(square))) .onTapGesture(self.handleUserDidTap(square))

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: …

1
CoreData และ SwiftUI: บริบทในสภาพแวดล้อมไม่ได้เชื่อมต่อกับผู้ประสานงานร้านค้าแบบถาวร
ฉันกำลังพยายามสอนตัวเองข้อมูลหลักโดยการสร้างแอปจัดการการบ้าน รหัสของฉันสร้างได้ดีและแอพทำงานได้ดีจนกระทั่งฉันพยายามเพิ่มการบ้านใหม่ในรายการ ฉันได้รับข้อผิดพลาดนี้Thread 1: EXC_BREAKPOINT (code=1, subcode=0x1c25719e8)ในบรรทัดต่อไปนี้: ForEach(courses, id: \.self) { course in. Context in environment is not connected to a persistent store coordinator: <NSManagedObjectContext: 0x2823cb3a0>คอนโซลนอกจากนี้ยังมีข้อผิดพลาดนี้: ฉันรู้น้อยมากเกี่ยวกับคอร์ข้อมูลและฉันกำลังสูญเสียเป็นสิ่งที่อาจเป็นปัญหา ฉันได้ตั้งค่าเอนทิตี "การมอบหมาย" และ "หลักสูตร" ในรูปแบบข้อมูลโดยที่หลักสูตรมีความสัมพันธ์แบบหนึ่งต่อหลายคนกับการมอบหมาย การมอบหมายแต่ละครั้งจะถูกจัดหมวดหมู่ภายใต้หลักสูตรเฉพาะ นี่คือรหัสสำหรับมุมมองที่เพิ่มการมอบหมายใหม่ให้กับรายการ: struct NewAssignmentView: View { @Environment(\.presentationMode) var presentationMode @Environment(\.managedObjectContext) var moc @FetchRequest(entity: Course.entity(), sortDescriptors: []) var courses: …

4
SwiftUI ScrollView ไม่ได้รับการอัพเดต?
เป้าหมาย รับข้อมูลที่จะแสดงใน scrollView ผลลัพธ์ที่คาดหวัง ผลลัพธ์ที่แท้จริง ทางเลือก ใช้Listแต่ไม่ยืดหยุ่น (ไม่สามารถลบตัวคั่นไม่สามารถมีหลายคอลัมน์ได้) รหัส struct Object: Identifiable { var id: String } struct Test: View { @State var array = [Object]() var body: some View { // return VStack { // uncomment this to see that it works perfectly fine return ScrollView(.vertical) { ForEach(array) { …
10 swiftui 

1
ไม่สามารถแปลงค่าประเภท 'Binding <Int> เป็นประเภทอาร์กิวเมนต์ที่คาดไว้' Binding <_> '
ฉันกำลังพยายามสร้างTabViewใน SwiftUI ด้วยรหัสต่อไปนี้: @State var selection = 0 var body: some View { TabView(selection: $selection) { DataGridPage(type: "media").tabItem { Image(systemName: "photo.on.rectangle") .imageScale(.large) .foregroundColor(.yellow) } .tag(1) DataGridPage(type: "files").tabItem { Image(systemName: "doc.on.doc") .imageScale(.large) .foregroundColor(.yellow) } .tag(2) } } Cannot convert value of type 'Binding&lt;Int&gt;' to expected argument type 'Binding&lt;_&gt;'แต่ฉันได้รับข้อผิดพลาด ฉันเห็นว่าตัวแปรselectionเป็นจำนวนเต็มซึ่งเป็นชนิดที่ถูกต้อง แต่คำเตือนยังคงอยู่ที่นั่นด้วยเหตุผลบางอย่าง
10 swiftui 

3
SwiftUI วิธีสร้างอินสแตนซ์ PreviewProvider เมื่อ View ต้องการ @Binding ใน initializer
ด้วย SwiftUI (Xcode 11.1) ฉันได้ตั้งค่า Views บางส่วนด้วยการผูกสองทาง (โดยใช้@ ผูก ) การอัปเดตสองทางใช้งานได้ดี อย่างไรก็ตามฉันจะสร้างอินสแตนซ์ของมุมมองจาก PreviewProvider ได้อย่างไร ตัวอย่างเช่น: struct AddProjectView: View { @Binding public var showModal: Bool var body: some View { return VStack { Text("Add Project View") Button("Dismiss") { self.showModal = false } } } } ฉันทำสิ่งนี้ไม่ได้เพราะ "ความจริง" ไม่ใช่การผูก: struct AddProjectView_Previews: PreviewProvider …
10 xcode  swiftui  combine 

4
วิธีการปรับใช้การแปลใน Swift UI
ใครช่วยฉันได้บ้าง ฉันไม่พบรายละเอียดของการแปลใน Swift UI ทุกคนสามารถให้คำแนะนำหรือยกตัวอย่างวิธีการแปลเป็นภาษาท้องถิ่นได้ดีขึ้นText()หรือไม่

1
ขยายแป้นพิมพ์ SwiftUI ด้วยปุ่มกำหนดเอง
ฉันกำลังพยายามหาวิธีเพิ่มคีย์หรือปุ่มในหมายเลข SwiftUI การอ้างอิงเดียวที่ฉันพบพบว่ามันเป็นไปไม่ได้ ในโลก Swift ฉันเพิ่มแถบเครื่องมือพร้อมปุ่มเพื่อยกเลิกคีย์บอร์ดหรือใช้งานฟังก์ชั่นอื่น ฉันจะสร้างมุมมอง ZStack ด้วยปุ่มที่อยู่ด้านบน แต่ฉันไม่สามารถหาวิธีเพิ่ม numberPad ในมุมมองของฉันเองได้ ทั้งหมดที่ฉันพยายามทำในกรณีนี้คือการยกเลิกหมายเลขบนหน้าจอเมื่อป้อนข้อมูล ก่อนอื่นฉันพยายามแก้ไข SceneDelegate ให้เลิกใช้ก๊อกน้ำ แต่ใช้ได้เฉพาะเมื่อฉันแตะที่มุมมองข้อความหรือฟิลด์ข้อความอื่นไม่ใช่ในพื้นที่เปิดโล่งในมุมมอง window.rootViewController = UIHostingController(rootView: contentView.onTapGesture { window.endEditing(true) }) โดยหลักแล้วฉันจะเพิ่มปุ่ม Done ที่ช่องว่างด้านล่างซ้าย อันดับที่สองควรเพิ่มแถบเครื่องมือถ้าสามารถทำได้ใน SwiftUI คำแนะนำใด ๆ ที่จะได้รับการชื่นชม Xcode เวอร์ชั่น 11.2.1 (11B500)
10 ios  xcode  keyboard  swiftui 

3
Swiftui - ฉันจะเริ่มต้น Obbject ที่สังเกตได้โดยใช้ environmentobject เป็นพารามิเตอร์ได้อย่างไร
ฉันไม่แน่ใจว่านี่เป็นปฏิปักษ์ในโลก SwiftUI ใหม่ที่กล้าหาญที่เราอาศัยอยู่ แต่โดยพื้นฐานแล้วฉันมี @EnvironmentObject พร้อมกับข้อมูลผู้ใช้พื้นฐานบางอย่างที่บันทึกไว้ในมุมมองของฉันที่สามารถโทรได้ ฉันยังมี @ObservedObject ซึ่งเป็นเจ้าของข้อมูลบางอย่างที่จำเป็นสำหรับมุมมองนี้ เมื่อมุมมองปรากฏขึ้นฉันต้องการใช้ @EnvironmentObject เพื่อเริ่มต้น @ObservedObject: struct MyCoolView: View { @EnvironmentObject userData: UserData @ObservedObject var viewObject: ViewObject = ViewObject(id: self.userData.UID) var body: some View { Text("\(self.viewObject.myCoolProperty)") } } น่าเสียดายที่ฉันไม่สามารถเรียกตนเองว่าตัวแปรสภาพแวดล้อมจนกว่าจะเริ่มต้น: "ไม่สามารถใช้สมาชิกอินสแตนซ์ 'userData' ภายในคุณสมบัติตัวเริ่มต้นคุณสมบัติตัวเริ่มต้นคุณสมบัติที่เรียกใช้ก่อนที่ 'ตัวเอง' จะพร้อมใช้งาน" ฉันเห็นเส้นทางที่เป็นไปได้สองสามทาง แต่พวกเขาทั้งหมดรู้สึกเหมือนแฮ็ก ฉันจะเข้าใกล้สิ่งนี้ได้อย่างไร
9 ios  swift  swiftui  xcode11 

2
บันทึกคำเตือนของ SKView
เมื่อเรียกใช้แอป SwiftUI &amp; SpriteKit ของฉันฉันได้รับข้อความต่อไปนี้ในบันทึก: 2019-11-18 21: 58: 57.631912 + 0000 PixelBattles [2812: 1215803] SKView: ละเว้น RenderSyncInLayoutSubviews ไม่มี โทร _renderSynchronouslyForTime โดยไม่มีตัวจัดการ ฉันทำอะไรผิดเพื่อรับบันทึกนี้และฉันควรกังวลกับเรื่องนี้หรือไม่? มันอาจเป็นข้อบกพร่องหรือไม่? มันสามารถเป็นที่ SwiftUI ไม่สามารถคิดออกว่าจะทำรูปแบบสำหรับSKView? การแก้ไขที่สำคัญ: หากคุณต้องการรหัสคุณสามารถดูได้ในการแก้ไขก่อนหน้า ด้านล่างฉันระบุว่าเพราะเหตุใดฉันจึงไม่คิดว่าจะเกี่ยวข้องกันอีกต่อไป ฉันส่งคำติชมมาแล้ว ( FB7456217) ฉันได้ลบรหัสออกไปแล้วเนื่องจากฉันไม่สงสัยอีกต่อไปว่ามันเป็นปัญหาของรหัสของฉัน ฉันสร้างโครงการเกมว่างเปล่าไม่มี SwiftUI และยังได้รับบันทึกการเตือนเดียวกันทันที ดังนั้นแม้จะมีเทมเพลตโครงการเริ่มต้นแล้วก็ตามบันทึกยังคงปรากฏสำหรับอุปกรณ์และเครื่องมือจำลอง ฉันจะอัปเดตเกี่ยวกับปัญหานี้หากฉันได้รับการตอบกลับที่มีประโยชน์ ฉันยังไม่ได้ยินอะไรเลย - มีใครได้รับข้อมูลใหม่ตั้งแต่เมื่อฉันโพสต์สิ่งนี้เมื่อครึ่งเดือนที่แล้ว? ฉันยังมีคำเตือนเหล่านี้!

1
วิธีการตั้งค่าปุ่ม ContextMenu สำหรับการลบและปิดการใช้งานใน SwiftUI?
ฉันพยายามกำหนดค่าปุ่มในcontextMenuแต่มันไม่ทำงาน Text("A label that have context menu") .contextMenu { Button(action: { // remove it }) { Text("Remove") .foregroundColor(.red) // Not working Image(systemName: "trash") }.disabled(true) // Not working } สิ่งที่ฉันมี: สิ่งที่ฉันกำลังค้นหา: ( ลบและปุ่มโทรออก ) ฉันจะสร้างสิ่งUIActionต่อไปนี้UIKitแต่ฉันไม่พบตัวดัดแปลงใด ๆ หรือนำสิ่งนี้ไปยังSwiftUI : let delete = UIAction(title: "Remove", image: UIImage(systemName: "trash"), attributes: .destructive) { action in …

1
macOS SwiftUI มุมมองแท็บแอปพร้อมการควบคุมแบ่งกลุ่มใน Toolbar
ฉันกำลังพยายามสร้างแอป macOS ด้วย SwiftUI ฉันต้องการTabViewหรือสิ่งที่คล้ายกัน แต่เมื่อฉันใช้TabViewการควบคุมแบ่งส่วนไม่ได้อยู่ในแถบเครื่องมือ macOS คลิกที่นี่เพื่อดูตัวอย่างสิ่งที่ฉันต้องการ รหัสปัจจุบันของฉันคือ: import SwiftUI struct ContentView: View { var body: some View { TabView { Text("1") .tabItem { Text("1") } } } } ผลลัพธ์อยู่ที่นี่เป็นรูปภาพ การควบคุมแบ่งส่วนจะต้องอยู่ในแถบเครื่องมือไม่ใช่มุมมอง ขอบคุณ.
9 swift  xcode  macos  swiftui 

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