Acess Widget View จากแอพ ContentView ใน SwiftUI

Sep 25 2020

สิ่งที่ฉันต้องการจะแสดงมุมมองวิดเจ็ตบนหน้าจอหลักของแอปเหมือนกับที่ทำในแอปนี้:

ฉันพยายามโทรWidgetEntryViewจากแอพของฉัน แต่มันไม่ได้ผล

คำตอบ

1 pawello2222 Sep 25 2020 at 05:20
  1. สร้างไฟล์แยกเฉพาะสำหรับคุณViewและEntry:
struct SimpleEntry: TimelineEntry {
    let date: Date
}
struct SimpleWidgetEntryView: View {
    var entry: SimpleProvider.Entry

    var body: some View {
        Text(entry.date, style: .time)
    }
}
  1. ตั้งค่าความเป็นสมาชิกเป้าหมายสำหรับไฟล์เหล่านี้เป็นทั้ง App และ Widget
  • Xcode“ Targets” พร้อมการกำหนดค่าบิวด์หลายแบบ

สิ่งสำคัญคือคุณต้องเลือกเฉพาะสองไฟล์นี้ - ตรวจสอบให้แน่ใจว่าคุณไม่ได้เพิ่ม@mainWidget / WidgetBundle ของคุณไปยังเป้าหมายแอพ

  1. แสดงมุมมองวิดเจ็ตโดยตรงใน ContentView:
struct ContentView: View {
     var body: some View {
        SimpleWidgetEntryView(entry: .init(date: Date()))
    }
}

นี่คือที่เก็บ GitHub ที่มีตัวอย่างวิดเจ็ตต่างๆรวมถึงวิดเจ็ตแสดงตัวอย่าง

EmilioPelaez Sep 25 2020 at 05:28

ฉันเขียนตัวควบคุมมุมมองเพื่อแสดงวิดเจ็ตในแอป UIKit ฉันสร้างขึ้นเพื่อทำให้ภาพหน้าจอของฉันเป็นแบบอัตโนมัติ แต่คุณสามารถใช้เป็นข้อมูลอ้างอิงได้

คุณสามารถดูว่าจะดูที่นี่

มีการรองรับวิดเจ็ตทุกขนาดและแม้ว่าจะไม่มีขนาดที่แน่นอน แต่ฉันคิดว่ามันทำได้ดีพอสมควร

เช่นเดียวกับที่กล่าวไปแล้วคุณจะต้องเพิ่มไฟล์มุมมองวิดเจ็ตบางไฟล์ไปยังเป้าหมายแอปของคุณด้วย