問題タブ [swiftui-foreach]

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.

0 投票する
1 に答える
766 参照

ios - SwiftUIはStepperでTextFieldを動的に追加/削除します

こんにちは、私はSwiftUIを初めて使用し、急勾配のプラスまたはマイナスが押されたときにTextFieldを追加または削除するきちんとした方法を見つけようとしています。

私は現在持っています

ただし、これにより、onDecrement が呼び出されたときに Index out of bounds 例外が発生します。String を Identifiable に準拠するように (@State構造体宣言の内側で)ラップしようとしましたForEach(answers)が、これを使用すると、変数が更新されないという警告が生成されます。

ここに投稿された解決策を試しましたが、役に立ちませんでした。

この結果は、ボタンを押したときに API 呼び出しを行う別の関数に渡されるため、永続的に保存する必要はありません。

これについての助けをいただければ幸いです。

0 投票する
1 に答える
122 参照

ios - 同じリスト内の複数の ForEach と 1 つの ForEach を持つ複数のリスト

私はiOSとSwiftUIが初めてで、「目標」アプリを作って遊んでいます。私が参照しているコードは単純なリストであり、完了とマークされた目標の上に未完了の目標がリストされています。ForEach複数の を同じ の中に入れようとすると、この興味深い問題に遭遇しましたList

以下のコードを使用した場合、(最初の foreach から) 不完全なゴールをタップすると、そのゴールは境界の下に移動しますが、GoalView()コンストラクターは再実行されないため、ゴールはまだ不完全であるように見え、さらにはまだgoal.markComplete()クラッシュの原因となる元のクロージャー ( ) を保持します。todayは であり、および@ObservedObjectの呼び出しによって更新されることに注意してください。markComplete()markIncomplete()

しかし、2 つの積み重ねられたリスト (以下を参照) を使用するように切り替えると、問題はなくなります。タップして目標を完了すると、それが一番下のリストに移動し、GoalView()コンストラクターが実行され、目標の外観と動作が変更されます。

この下部の実装がクロージャーGoalView()で再実行される原因となる根本的な違いは何ですか? ForEachしませんか?私は特に、両方の実装が完了した目標を境界の下に移動する理由について混乱していForEachます。説明/ヒントをいただければ幸いです。

編集: today(タイプDay) とgoal(タイプGoal) は両方ともNSManagedObjects / CoreData エンティティです。completedGoals以下に含まれているのは、 from an extension toの私の定義ですDay。これにより、2 つがどのように定義され、関連しているかが明らかになります。それぞれDayに呼び出された関係がcompletedGoals_ありincompleteGoals_、その日にリンクされた順序付けられていない目標のセットです。

markComplete()そして、ここに拡張からへの大まかな実装がありますGoal(へdaysThatDidntComplete_の逆の関係completedGoals_であり、不完全と同じです):