SwiftUI

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,会显示上次关闭前记录的页面

上一篇下一篇

猜你喜欢

热点阅读