プレビュー機能において、Bindingを付与したプロパティを使用しようとすると、PreviewProvideでエラーが発生し、プレビュー機能が使用不可となり、不便だったため解決方法を調べてみました。
プレビューが使用可能になった方法
@Bindingを使用する際に上位View(下記コードではPreviewProvider部分)で@Stateを付与したプロパティを使用しています。
さらにPreviewProviderから渡すプロパティは「static」を付与しておく必要があります。
import SwiftUI
struct TextEditorSample: View {
// 編集した文字列を格納するプロパティをBindingで宣言
@Binding var inputText: String
var body: some View {
VStack {
Text("テキストエディタ")
// テキストエディタを表示し入力した文字列を
// $inputTextに格納する
TextEditor(text: $inputText)
.font(.body) // フォント
.foregroundColor(Color.green) // 文字の色
.multilineTextAlignment(.trailing) //テキストの配置
.lineSpacing(30) // 行間
.border(.black, width: 3) // 境界線の色と幅
.frame(width: 300, height:250) // テキストエディタのサイズ
.cornerRadius(3) // 境界線の丸み
.colorMultiply(.orange.opacity(0.3)) // 背景色
}
}
}
struct TextEditorSample_Previews: PreviewProvider {
// PreviewProviderから渡すプロパティには@Stateとstaticを付与する
@State static var preview = ""
static var previews: some View {
TextEditorSample(inputText: $preview)
}
}これで、Bindingを付与したプロパティを使用していてもプレビュー機能を活用することができます。

