前提・実現したいこと
Combineの初学者です。
SwiftUIとCombineの勉強として
画面表示されている2つのTextFieldに値を入力した場合に
Textが表示される画面を作ろうとしています。
下記のコードを実行したところ、
TextFieldに入力しても何も動作しません。
基礎勉強中なので、根本的な間違いがあるかもしれません。
ご教示していただきたいです。
View
swift
1import SwiftUI 2 3struct SwiftUIView: View { 4 @ObservedObject var vm = VM() 5 6 var body: some View { 7 VStack { 8 TextField("text", text: $vm.text) 9 TextField("messege", text: $vm.messege) 10 if (!vm.isBothInput) { 11 Text("this is Combine!") 12 } 13 } 14 } 15}
ViewModel
swift
1import Foundation 2import Combine 3 4class VM:ObservableObject { 5 @Published var text = "" 6 @Published var messege = "" 7 @Published private(set) var isBothInput = false 8 9 init() { 10 _ = Publishers 11 .CombineLatest($text, $messege) 12 .map { (text, messege) in 13 return !text.isEmpty && !messege.isEmpty 14 } 15 .receive(on: RunLoop.main) 16 .assign(to: .isBothInput, on: self) 17 } 18}
補足情報(FW/ツールのバージョンなど)
Xcode 12.1
ネット上にあったCombineのサンプルプログラムも私の環境では動作しませんでした。
Combineを使うには何か設定など必要でしたらそれも教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。