SwiftUI 初体验 7 编辑模式

参考:https://developer.apple.com/tutorials/swiftui/working-with-ui-controls

效果:点击右上角的用户按钮打开个人档案

档案显示个人信息
在这里插入图片描述
点击edit进入编辑状态,会出现cancel按钮,点击cancel返回个人档案,点击done提交编辑。
在这里插入图片描述
下面看看怎么实现:
在sceneDelegate中指定environmentObject,该对象表示绑定视图的数据会根据数据的修改而更新视图。

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
   
        if let windowScene = scene as? UIWindowScene {
   
            let window = UIWindow(windowScene: windowScene)
            window.rootViewController =
                UIHostingController(rootView:SpeciesHome().environmentObject(UserData())
            )
            self.window = window
            window.makeKeyAndVisible()
        }
    }

查看UserData,需要继承ObservableObject以获取其特性

final class UserData: ObservableObject {
   
    @Published var showFavouriteOnly = false
    @Published var animalData = speciesData
    @Published var profile = Profile.default
}

在主页增加profile入口:profileButton,以属性的形式封装可以简化body的结构,它需要绑定一个bool属性的toggle来控制档案页面的展示。.sheet的isPresent动作可以绑定button的showingProfile布尔值达到控制效果。

在档案展示的时候必须把environmentObject传递进去,以保证后面使用的environment是一致的,就可以达到Observable对象控制多个视图更新的效果。

struct SpeciesHome: View {
   
    
    @State var showingProfile = false
    @EnvironmentObject private
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值