2009-08-10 3 views
4

Ich habe eine benutzerdefinierte UITableViewCell, die ein UISlider Steuerelement und ein UILabel enthält, die den aktuellen Textwert für die Schiebereglerposition zeigt. Ich möchte das Etikett aktualisieren, während der Schieberegler gezogen wird. Hier sind die grundlegenden Elemente.UISlider Update innerhalb von UITableViewCell

cellForRowAtIndexPath: Diese Routine nimmt Daten auf und aktualisiert den Schiebereglerwert und die damit verbundene Beschriftung.

sliderValueChanged: Diese Routine liest den Schieberegler Wert aktualisiert die Daten. Es ruft dann [table reloadData] auf, damit das Label aktualisiert wird.

Problem: Irgendwie unterbricht die reloadData den Fluss von Updates. Wenn ich NSLog anstelle von reloadData ersetze, bekomme ich einen netten Strom von Updates, die den Wert des Sliders zeigen. In einem Versuch, Schleifenbildung zu verhindern, setze ich Tests, um den Slider-Wert nicht zu setzen oder reloadData aufzurufen, wenn der Wert nicht unterschiedlich ist. Das hat die Dinge nicht repariert.

Jede Hilfe würde sehr geschätzt werden!

Antwort

6

Das Problem wird durch die [Tabelle reloadData] verursacht, die anscheinend ein neues Cell-Objekt erstellt, so dass Aktualisierungen desselben Schiebereglers nicht funktionieren. Die korrekte Implementierung bestand darin, die referenzierte Zelle in die Routine sliderValueChanged zu übernehmen und die Beschriftung von dort aus festzulegen. Setzen Sie ein Tag auf den Schieberegler, um die Zeile anzugeben, und rufen Sie dann die Methode auf, um die Zelle mit dem Indexpfad abzurufen.

+0

würde gerne etwas Code auf diesem zu sehen, ich arbeite daran, die gleiche Sache zu tun, wenn ich es herausgefunden habe, werde ich es posten. – nickthedude

1

So etwas ist mir passiert. Gehen Sie zu Buildeinstellungen und suchen Sie nach einem Compiler, der als "Floating Point Library-Aufrufe aktivieren" gekennzeichnet ist. Stellen Sie sicher, dass es deaktiviert ist. Schau, ob dir das hilft.

+0

Diese Flagge ist in meinem Code deaktiviert und ich habe immer noch das Problem. – Voripteth