0

と の 3 つのプロパティを持つクラスがありtopic、クラスのプロパティの 1 つでビューモデルを初期化する必要があります。しかし、他のプロパティを初期化する必要はありません。必要な API 呼び出しを行うため、ビュー モデルを初期化する必要があります。navBarHiddenviewModeltopic

これがコードのスニペットです。

struct TopicCell: View {
    @Binding var navBarHidden : Bool?
    @State var topic: Topic?
    @ObservedObject var viewModel : TopicCellViewModel
    
    init() {
        self.viewModel = TopicCellViewModel(topic: self.topic!)
    }
    
}

最初はtopicnavBarHiddenはオプションではありませんでしたが、初期化する必要がありましたが、これはやりたくありません。それらを初期化するすべてのデータを渡す必要があります。したがって、それらをオプションにしました。これにより、それらを初期化する必要がなくなり、オプションを強制的にアンラップするだけです。

しかし、これは私に1つの問題を与えます。

NavigationLink( 
destination: DebateChatView(navBarHidden: $navBarHidden, topic: $topic, subtopic:
 .constant(SubTopic(dictionary: ["id": "", "topic": "Random Subtopic", "title": topic!.title, 
"bool": false , "messages": MOCK_MESSAGEZ])))

topicofとの 2 つのバインド変数に注意してくださいnavBarHidden。DebateChatView はバインドされたオプションではなく、バインドされた通常のデータを想定しているため、これらは現在機能しません。しかし、うまくいき$topic!ません。それで、誰かがこの問題を解決する最善の方法を教えてもらえますか?

4

1 に答える 1