![](/img/trans.png)
[英]Binding<(() -> Void)?> in ContentView_Previews
[英]SwiftUI ContentView_Previews not running function
我正在嘗試使用直接在ContentView_Previews
中編寫的方法為我在 Xcode 中的預覽生成一些模擬數據,但我沒有成功,我不明白為什么。
struct ContentView_Previews: PreviewProvider {
static let healthManager = generateMockData()
static var previews: some View {
MainView().environmentObject(healthManager)
}
static func generateMockData() -> HealthManager {
let defaultHealthManager = HealthManager()
defaultHealthManager.gavePermissions = true
for i in 1...10 {
let defaultWorkout = HKWorkout(activityType: .traditionalStrengthTraining,
start: .now - Double(i * 50),
end: .now,
duration: Double(i * 100),
totalEnergyBurned: HKQuantity(unit: .largeCalorie(), doubleValue: Double(i * 100)),
totalDistance: nil,
device: nil,
metadata: nil)
defaultHealthManager.previousWorkouts.append(defaultWorkout)
}
return defaultHealthManager
}
}
基本上它顯示defaultHealthManager
object 除了默認值之外沒有設置任何值。 如果我調用ContentView_Previews. generateMockData()
在運行時的實際視圖中為我的屬性ContentView_Previews. generateMockData()
,它工作正常。
有時,我似乎需要創建我稱之為中間視圖的東西來讓事情正常進行。 這樣的東西有用嗎?
struct MainViewIntermediary: View {
@State var healthManager: HealthManager
init() {
let defaultHealthManager = HealthManager()
defaultHealthManager.gavePermissions = true
for i in 1...10 {
let defaultWorkout = HKWorkout(activityType: .traditionalStrengthTraining,
start: .now - Double(i * 50),
end: .now,
duration: Double(i * 100),
totalEnergyBurned: HKQuantity(unit: .largeCalorie(), doubleValue: Double(i * 100)),
totalDistance: nil,
device: nil,
metadata: nil)
defaultHealthManager.previousWorkouts.append(defaultWorkout)
_healthManager = State(initialValue: defaultHealthManager)
}
}
var body: some View {
MainView().environmentObject(healthManager)
}
}
然后你的預覽提供者變成:
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
MainViewIntermediary()
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.