問題タブ [swiftui-environment]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 環境オブジェクトの更新によって同じビューがリロードされる場合、別の SwiftUI ビューに移動するにはどうすればよいですか
私が達成しようとしていること: 私は新しい SwiftUI 開発者です。シンプルなアドレス帳アプリを構築しようとしています。3 つのビューがあります。
- ContentView - リスト ビューにすべての連絡先を含むメイン ビューで、ナビゲーション ビューの上部に [連絡先の追加] ('+') と [編集] ボタンがあります。
- AddContact ビュー - 「名前」、「電子メール」テキスト フィールド、および「送信」ボタンがあります。
- DisplayContactDetails ビュー - この質問には関係ありません。
「Contact」オブジェクトの配列である環境オブジェクト「myContacts」を作成し、それを ContentView に渡して、アドレス帳のすべての連絡先を追跡しました。
ユーザーが AddContact ビューに移動し、名前と電子メールを追加して送信すると、環境オブジェクト "myContacts" が更新され、ユーザーが ContentView に戻って新しい連絡先のアドレス帳を表示できるようになります。含まれています。
問題:
ユーザーが AddContact ビューで [送信] を押すと、ユーザーを ContentView に戻すために作成したナビゲーション リンクが正しく呼び出されます。しかし、環境オブジェクト "myContacts" も送信によって更新されているため、すぐに ContentView から AddContact ビューに再び移動します。そのため、最初にナビゲーション リンクを実行しているように見えますが、myContacts の更新により AddContact ビューをリロードしています。
コード - コンテンツ ビュー:
コード - AddContactView
私が試したこと
.add メソッドをコメントアウトし、環境オブジェクトを更新しない場合、ContentView に戻るナビゲーションは期待どおりに機能します。だから私は、具体的には問題の原因であることを知っています.
ボタンに .onTapGesture 修飾子を追加して、そこに .add を呼び出してみました。
ビュー全体に .onDisappear 修飾子を追加して、そこに .add を呼び出してみました。
--これを解決するための助けや明確さは大歓迎です
編集:画面記録 - 最初のコメントに基づいて解決策を試す:
奇妙な動作: 連絡先の自動ルートを追加しようとする最初の試みは、AddContactView に戻り、同じエラーが発生します。しかし、もう一度試してみると、ContactView に正しくルーティングされます。