0

私の目標は、ユーザーが 1 つのビュー (新しいタスクの追加) でフォームに入力し、[新しいタスクの作成] ボタンを押すと、フォームのデータが別のビュー (割り当ての表示) に引き継がれ、リストの新しいアイテム。このリスト項目には、データの 5 つの変数すべてが含まれ、クリック可能である必要があります。

ただし、ビュー間でプロパティを接続するのに問題があります。これが [割り当ての追加] ページのコードです。

import SwiftUI

class FormViewModel: ObservableObject {
    @State var taskName = ""
    @State var dueDate = ""
    @State var subject = ""
    @State var weighting = ""
    @State var totalMarks = ""
    @State var appPage = 0
}
 
struct AddAssignment: View {
    
    @StateObject var viewModel = FormViewModel()
    
    var body: some View {
        NavigationView {
            
            VStack {
                
                HStack { // Titling
                    Spacer()
                    Text("Add New Task")
                        .font(.headline)
                        .scaleEffect(2.0)
                    Spacer()
                    Image(systemName: "plus.square.fill")
                        .scaleEffect(2.0)
                    Spacer()
                }
                
                
                Form { // Gathering data
                    Section {
                        TextField("Enter task name",
                                  text: $viewModel.taskName)
                        TextField("Enter due date",
                                  text: $viewModel.dueDate)
                        TextField("Enter subject",
                                  text: $viewModel.subject)
                    }
                    
                    Section(header: Text("Enter other task details:")) {
                        TextField("Enter task weighting",
                                  text: $viewModel.weighting)
                        TextField("Enter total marks",
                                  text: $viewModel.totalMarks)
                    }
                }
                
                Button(action: { // Part of VStack
                    ViewAssignment()
                    
                }, label: {
                Text("Create New Task")
                        .frame(width: 250,
                               height: 50,
                               alignment: .center)
                        .background(Color.blue)
                        .foregroundColor(.white)
                        .cornerRadius(8)
                })
                .padding()
            }
        }
        
        
    
    
    }
    
}
 
 
struct AddAssignment_Previews: PreviewProvider {
    static var previews: some View {
        AddAssignment()
            .preferredColorScheme(.dark)
    }
}

まず、ボタンが次のビューに移動しません。「'ViewAssignment' イニシャライザの結果が使用されていません」という警告が表示されます。しかし、プロパティが他のビューに接続されている場合でも、テキストは表示されません。他のビューは次のとおりです。

import SwiftUI

struct ViewAssignment: View {
    @StateObject var viewModel = FormViewModel()
    var body: some View {
        
        VStack {
            
            Text(viewModel.taskName)
                .padding()
            
            Image(systemName: "house.fill")
            
        }
            
            
            
    }
        
    
}


struct ViewAssignment_Previews: PreviewProvider {
    static var previews: some View {
        ViewAssignment()
    }
}

@State と @Published のどちらを使用すべきかよくわからないため、探しているエラーについて少し混乱しています。他のビューのフォームにテキストを入力しても、画面にポップアップするテキストはありません。

誰かが私をチュートリアルの方向に向けることができたとしても、助けていただければ幸いです。

4

0 に答える 0