Wie bette ich ein Video in einer ScrollView ein (SwiftUI)?
struct Doppelspalt: View {
    
    var body: some View{
        ScrollView{
            Text("Doppelspalt-Experiment")
                .font(.title2)
                .navigationTitle("Doppelspaltversuch")
            
            Spacer()
            Text("Der Doppelspalt-Versuch ist ein wichtiges Experiment in der Quantenphysik, das die ungewöhnlichen Eigenschaften von Quantenobjekten demonstriert. Im Experiment wird ein Lichtstrahl durch zwei enge Spalte geleitet, die so eng sind, dass nur ein einzelnes Photon auf einmal hindurchpassen kann...")
                .padding(.horizontal, 24)
            
            VideoView(videoID: "lKZaHgNmQ_o")
                .frame(minHeight: 0, maxHeight: UIScreen.main.bounds.height * 0.3)
                .cornerRadius(12)
                .padding(.horizontal, 24)
            Spacer()
            Text("Kopenhagener Deutung")
                .font(.title2)
            Spacer()
            
            Text("Die Kopenhagener Deutung betont die Unbestimmtheit und Unvorhersagbarkeit von Messungen in der Quantenmechanik...")
                .padding(.horizontal, 24)
            VideoView(videoID: "TiXfAs0Wf_E")
                .frame(minHeight: 0, maxHeight: UIScreen.main.bounds.height * 0.3)
                .cornerRadius(12)
                .padding(.horizontal, 24)
            
            Spacer()
        }
    }
}

Wenn ich die ScrollView entferne werden die Videos angezeigt aber mit der SchrollView verschwinden sie einfach.

Video, Swift, einbetten, SwiftUI
SwiftUI ObservableObject muss raus?

Ich bekomme andauernd den Fehler "Cannot preview in this file" und glaube den Fehler im ObservableObject gefunden zu haben. Das Problem ist halt, dass ich einige Lösungen im Internet benutzt habe, die mich anfangs weitergebracht haben aber jetzt mich dran hindern weiterzukommen. Auf jeden Fall glaube ich, dass das ObservableObject weg muss aber ich scheitere dran wie ich es rausnehme.

Ich vermute es, da mir einer andere Meldung folgendes sagt:

Thread 1: Fatal error: No ObservableObject of type ModelData found. A View.environmentObject(_:) for ModelData may be missing as an ancestor of this view.

Da ich nach meinem Verständnis aber eigentlich kein ObservableObject brauche denke ich muss es raus.

Für Alternativen und einer Belehrung bin ich trotzdem offen ^^

import SwiftUI

struct CategoryHome: View {
   @EnvironmentObject var modelData: ModelData

    var body: some View {
        NavigationView {
            List{
                
                Image("Denkmal")
                              .resizable()
                              .scaledToFill()
                              .frame(height: 200)
                              .clipped()
                              .listRowInsets(EdgeInsets())
                
                
               ForEach(modelData.categories.keys.sorted(), id: \.self) { key in
                    CategoryRow(categoryName: key, items: modelData.categories[key]!)
                }
                .listRowInsets(EdgeInsets())
                
            }
            .navigationTitle("Featured")
             


        }
    }
}

struct CategoryHome_Previews: PreviewProvider {
    static var previews: some View {
        CategoryHome()

    }
}
import Foundation
import Combine

final class ModelData: ObservableObject {
    @Published var GeschichteJN: [GeschichteDekl] = load("GeschichteData.json")
  

  

    var categories: [String: [GeschichteDekl]] {
        Dictionary(
            grouping: GeschichteJN,
            by: { $0.category.rawValue }
        )
    }
}

func load<T: Decodable>(_ filename: String) -> T {
    let data: Data

    guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
        else {
            fatalError("Couldn't find \(filename) in main bundle.")
    }

    do {
        data = try Data(contentsOf: file)
    } catch {
        fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
    }

    do {
        let decoder = JSONDecoder()
        return try decoder.decode(T.self, from: data)
    } catch {
        fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
    }
}


Computer, programmieren, Swift, SwiftUI

Meistgelesene Beiträge zum Thema Swift