AppStorage va SceneStorage
SwiftUI AppStorage va SceneStorage
Kichik qiymatlarni @AppStorage bilan, har bir sahna (scene) uchun view holatini esa @SceneStorage bilan saqlang.
@AppStorage (User Defaults)
O‘zgarishlar ilova qayta ishga tushirilganda ham saqlanib qolishi uchun qiymatni to‘g‘ridan-to‘g‘ri UserDefaults ga bog‘lang.
Sintaksis: @AppStorage("key") var value: T = default
Misol
import SwiftUI
struct AppStorageDemo: View {
@AppStorage("username") private var username = ""
var body: some View {
VStack(spacing: 12) {
Text("Hello, \(username.isEmpty ? "Guest" : username)")
TextField("Username", text: $username)
.textFieldStyle(.roundedBorder)
}
.padding()
}
}
import SwiftUI
struct ContentView: View {
var body: some View { AppStorageDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
Ushbu misol foydalanuvchi nomini UserDefaults da saqlaydi va UI’ni sinxron holda ushlab turadi.
@SceneStorage (har bir sahna uchun UI holati)
Vaqtinchalik UI ma’lumotlarini (masalan, qoralamani) har bir oyna/sahna uchun saqlang; sahna qaytganda holat tiklanadi.
Sintaksis: @SceneStorage("key") var value: T
Misol
import SwiftUI
struct SceneStorageDemo: View {
@SceneStorage("draft_note") private var draft = ""
var body: some View {
VStack(alignment: .leading, spacing: 8) {
Text("Draft:")
TextEditor(text: $draft)
.frame(minHeight: 120)
.overlay(RoundedRectangle(cornerRadius: 6).stroke(.secondary))
}
.padding()
}
}
import SwiftUI
struct ContentView: View {
var body: some View { SceneStorageDemo() }
}
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup { ContentView() }
}
}
Ushbu misol har bir sahna uchun matn qoralamasini saqlaydi, shuning uchun oynalar almashtirilganda kontent har birida mustaqil saqlanib qoladi.
Maslahat: Sozlamalar uchun @AppStorage dan, vaqtinchalik UI holati uchun esa @SceneStorage dan foydalaning.
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
