私のアプリケーションコードはかなり長いので、この問題を解決するにはコードの束を表示せずに解決したいと思っています....しかし、ここでは何が起こっているのですか...UITable UITextFieldが正しくデータを表示しないSWIFT 3.0
ダイナミックセルのテーブルビューはすべて正しく設定されています。セルにはテキストフィールドがあります。テキストフィールドにデータが入力されると、同じセル内のラベルにデータが送信されます。これは「完了」ボタンが押されたときに発生します。これは、テーブルに約6行追加されるまで、すべての動作が見つかります。その時点で、「完了」ボタンが押されると、データがすべて混ざり合ってしまいます。ときには、データが間違ったセルラベルに送信され、まったく送信しない場合もあります。これは、約6行になると発生します。私は非常に混乱しています。セルは、Core Dataのentity.countに基づいて表示されます。テキストフィールドにはデリゲートが設定されています。これを引き起こす可能性のあるものはありません... 6行後のみです。
ご協力いただきありがとうございます...私が言ったように、ここでコードを貼り付けないようにしたいと思いますが、もし私が何かを提供しなければならない場合や、コード...ここ
EDIT
は私がTHIを願ってセルの内容
if searchResults.count > 1 {
if showInGrams {
if foods[indexPath.row].units != "g" && foods[indexPath.row].units != "grams" && foods[indexPath.row].units != "Grams" {
if cell.changeServingTextField.text == "" {
cell.labelServing.text = String(format: "%0.2f", (100/foods[indexPath.row].coefficient) * searchResults[indexPath.row].doubleValue)
cell.labelUOM.text = "grams"
} else {
if cell.changeServingSegmentedControl.selectedSegmentIndex == 0 {
cell.labelServing.text = String(format: "%0.2f", Double(cell.changeServingTextField.text!)!)
cell.labelUOM.text = cell.changeServingSegmentedControl.titleForSegment(at: 0)
//show default values
} else {
cell.labelServing.text = String(format: "%0.2f", Double(cell.changeServingTextField.text!)!)
cell.labelUOM.text = cell.changeServingSegmentedControl.titleForSegment(at: 1)
}
}
} else {
if cell.changeServingTextField.text == "" {
cell.labelServing.text = String(format: "%0.2f", searchResults[indexPath.row].doubleValue * foods[indexPath.row].serving)
cell.labelUOM.text = "grams"
}
}
} else {
if cell.changeServingTextField.text == "" {
cell.labelServing.text = String(format: "%0.2f", searchResults[indexPath.row].doubleValue * foods[indexPath.row].serving)
cell.labelUOM.text = foods[indexPath.row].units
} else {
if cell.changeServingSegmentedControl.selectedSegmentIndex == 0 {
cell.labelServing.text = String(format: "%0.2f", Double(cell.changeServingTextField.text!)!)
cell.labelUOM.text = cell.changeServingSegmentedControl.titleForSegment(at: 0)
} else {
cell.labelServing.text = String(format: "%0.2f", Double(cell.changeServingTextField.text!)!)
cell.labelUOM.text = cell.changeServingSegmentedControl.titleForSegment(at: 1)
}
}
}
にテキストフィールドを扱うことcellForRowAtの私のコードの一部であります助けてくれる、ありがとう
データを格納するためにセルを使用しようとしているように見え、キャッシュされ再利用されているという事実によってキャッチされているようです。一般に、 "cellForRow ..."メソッドの外にあるセルの内容には何もしないで、そのメソッドの中に保存されたデータから** **完全に設定するのは安全です。 –
問題に関連するコードを投稿してください。あなたの問題が発生しているコードの最小量を把握することは、根本的な原因に取り組むのにも役立ちます。手元の問題に関係しないプロパティをすべて削除します。問題を示す最小限のコードが得られるまで続けてください。これを調べるために、あなた自身の新しい一時的なプロジェクトを作成すると便利かもしれません。 –
返事をありがとう。私のコードはすべて基本的にcellForRowメソッドの内部にあります。セル内でこれらのtextFieldを使用することは重要です。なぜなら、空白のままであるかどうかによって多くのことが起こるからです... – Bill