[解決済み] SwiftUI の @State 変数の初期化に関する問題
2022-09-22 17:31:08
質問
の値を初期化したい。
@State
の値を初期化したいのですが、SwiftUI では
init()
メソッドで
Struct
のメソッドで、TextField での操作のために準備された辞書から適切なテキストを取得できるようにします。
ソースコードは以下のような感じです。
struct StateFromOutside: View {
let list = [
"a": "Letter A",
"b": "Letter B",
// ...
]
@State var fullText: String = ""
init(letter: String) {
self.fullText = list[letter]!
}
var body: some View {
TextField($fullText)
}
}
残念ながら実行は失敗し、エラー
Thread 1: Fatal error: Accessing State<String> outside View.body
どうしたら解決できますか?よろしくお願いします。
解決方法を教えてください。
私なら、初期化を
onAppear
.
struct StateFromOutside: View {
let list = [
"a": "Letter A",
"b": "Letter B",
// ...
]
@State var fullText: String = ""
var body: some View {
TextField($fullText)
.onAppear {
self.fullText = list[letter]!
}
}
}
あるいは、さらに良い方法として、モデル・オブジェクト (
BindableObject
ビューにリンクされたモデルオブジェクト) を使用し、すべての初期化とビジネスロジックをそこで行います。ビューは自動的に更新され、変更を反映します。
更新してください。
BindableObject
は現在
ObservableObject
.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン