交互动作:打开HonePageView页面
完成打卡编辑弹窗,并实现编辑更新操作后,我们来补充完善下打开HonePageView页面的交互。在之前的章节我们使用NavigationLink导航菜单跳转方式实现了页面跳转,由于会和我们点击编辑操作相冲突,因此我们注释了这部分代码。
这里我们再介绍一种弹窗,fullScreenCover全屏覆盖弹窗,用fullScreenCover也可以实现页面跳转的效果。
首先先声明打开弹窗的变量,我们在CardView视图中声明变量,如下代码所示:
@State var showHomePageView: Bool = false
然后实现调用fullScreenCover全屏覆盖弹窗的方法,如下代码所示:
//打开身份卡主页 .fullScreenCover(isPresented: $showHomePageView, content: { HomePageView(platformName: platformName, indexURL: indexURL) .edgesIgnoringSafeArea(.all) })
上述代码中,我们给CardView的主要内容增加了fullScreenCover修饰符,用于打开全屏覆盖弹窗。
弹窗打开触发动作绑定声明好的参数showHomePageView,目标地址选择HomePageView,并且绑定相关的参数,我们希望这个弹窗全屏展示,增加了edgesIgnoringSafeArea忽略安全区域修饰符。
打开弹窗的操作,我们希望点击身份卡片时打开,但又不能和编辑按钮相冲突。
我们可以将平台图标、平台称号、平台名称部分的样式再使用一个容器包裹起来,点击这个容器打开HomePageView页面,这样就可以做到不和编辑按钮相冲突了。如下图所示:
最后我们增加点击事件在这个容器中,当点击时打开fullScreenCover弹窗,如下代码所示:
.gesture( TapGesture() .onEnded({ self.showHomePageView.toggle() }) )
由于fullScreenCover弹窗是由下往上打开,因此我们可以换一个返回按钮的样式,让操作看起来流畅些,如下图所示:
项目预览
完成后,我们在模拟器中预览下效果,如下图所示:
项目小结
在本章中,我们实现了EditView页面的界面设计、页面跳转、编辑更新方法,单一个编辑操作就很不容易,哭泣。
但最重要的是学习了结构化编程方法,将页面的元素分块,然后抽离创建单独的构件,如此不管在新增页面还是在编辑页面,我们都只需要维护一套代码,这大大减轻了代码量,也使得编程更加优雅。
那么对于一个本地项目来说,linkworld已经完成了查看、新增、编辑、删除操作,似乎可以告一段落了。但是,如果一款产品要成功上线AppStore,那么仅仅在模拟器中使用这些功能是远远不够的,我们还需要进行本地化存储等功能的开发等等工作。
那么在下一章中,我们将介绍如果实现本地存储及远端数据存储相关的内容,请保持期待吧~