声明双向绑定变量还需要在预览PlatformPicker时增加参数的默认值,如下代码所示:
PlatformPicker(platformIcon: .constant("icon_juejin"), platformName: .constant("稀土掘金技术社区"))
下一步到IndexURLView视图,将原来NewView中的indexURLView视图代码复制过来,如下代码所示:
import SwiftUI struct IndexURLView: View { @Binding var indexURL:String var body: some View { ZStack(alignment: .topLeading) { TextEditor(text: $indexURL) .font(.system(size: 17)) .padding(15) .disableAutocorrection(true) .autocapitalization(.none) if indexURL.isEmpty { Text("请输入主页链接") .foregroundColor(Color(UIColor.placeholderText)) .padding(20) } } .background(Color(.systemGray6)) .cornerRadius(8) .padding() .frame(maxHeight: 240) } } struct IndexURLView_Previews: PreviewProvider { static var previews: some View { IndexURLView(indexURL: .constant("")) } }
完成之后,我们就可以回到NewView视图中,将原来的参数以及titleInputView平台输入框视图、platformPicker平台选择器视图、indexURLView链接地址视图的代码删掉,如下图所示:
删除代码后,我们使用单独搭建的构件来重新搭建样式,如下代码所示:
TitleInputView(title: $title) PlatformPicker(platformIcon: $platformIcon, platformName: $platformName) IndexURLView(indexURL: $indexURL)
如此,NewView视图在维持原有功能样式不变的情况下,代码量也精简很多。