SwiftUI 2.0 使用@AppStorage进行状态存储
2021-02-16 本文已影响0人
刘铁崧
新的SceneStorage属性在具有多窗口支持的应用程序(通常基于iPadOS和macOS构建)的状态恢复中非常方便。
Unlike AppStorage, it doesn’t save data in UserDefaults. Instead, it’s just a state property that’s unique for each scene in your application.
与AppStorage不同,它不会在UserDefaults保存数据。 相反,它只是状态属性,对于您的应用程序中的每个场景都是唯一的。
话不多说,先上代码在看效果:
enum Tab:String {
case first
case second
}
struct ContentView: View {
@SceneStorage("selectedTab") var selectedIndex:Tab = Tab.first;
var body: some View{
TabView(selection:$selectedIndex){
NavigationView{
Text("第一个页面").navigationTitle("首页")
}.tabItem {
Image(systemName: "message")
Text("first")
}.tag(Tab.first)
NavigationView{
Text("第二个页面").navigationTitle("子页")
}.tabItem {
Image(systemName: "person.2")
Text("second")
}.tag(Tab.second)
}
}
}
效果:
程序切除并kill掉后重新打开app,会显示上次关闭前记录的页面