Hi,
ich bin am verzweifeln und hoffe, Ihr könnt mir helfen. Google konnte es nicht. Ich habe folgendes Problem: Ich empfange Daten von einem Sensor über Bluetooth. Das klappt ganz gut. Dies geschieht in den eine Controller. Dann habe ich mir zwei Container-ViewController erstellt, die ein TableViewController enthalten (aus Design-Gründen) und registriere die Zellen zum empfangen einer NSNotification. Jedesmal, wenn ich z.B. Lichtwerte empfange wird die passende Notification ausgelöst und soll empfangen werden. Soweit die Theorie.
Das ganze läuft auch solange man nicht Scrollt oder die Werte ändert. Wenn ich jetzt z.B. ins Menü gehe und sage ich will Licht mehr angezeigt haben sondern Temperatur, das speichere und dann den TableView neu lade, bekomme ich nichts mehr angezeigt bzw. wenn ich es anders programmiere mehre Werte sekündlich wechselnd.
Ich habe rausgefunden, dass das daran liegt, dass der TableView die Zellen ja reused. Also habe ich als erstes probiert mich beim didEndDisplayCell da wieder unzuregistrieren und dann in cellForRowAtIndexPath wieder zu registrieren. Das war mäßiger Erfolg. Als nächstes habe ich direkt in cellForRowAtIndexPath versucht mich als erstes zu deregistrieren und dann wieder zu registrieren. Das ganze läuft aber nur bis ich 2-3 mal gescrollt habe.
Bei beiden Methoden tritt dann das Phänomen auf, dass man für nichts mehr registriert ist und nichts mehr angezeigt wird.
Wie kann ich das beheben? Wie man das Reusen ausstellen kann trotz dessen, dass man Storyboard, habe ich noch nicht rausfinden können. Geht das überhaupt? Klar kostet es mehr Speicher aber maximal können 10 Zellen angezeigt werden, da es nur 10 Sensor Werte gibt - also da hält sich das in Grenzen. Was kann man noch machen? Hatte jemand schon mal das Problem?
Viele Grüße und euch einen schönen Sonntag
Nils
ich bin am verzweifeln und hoffe, Ihr könnt mir helfen. Google konnte es nicht. Ich habe folgendes Problem: Ich empfange Daten von einem Sensor über Bluetooth. Das klappt ganz gut. Dies geschieht in den eine Controller. Dann habe ich mir zwei Container-ViewController erstellt, die ein TableViewController enthalten (aus Design-Gründen) und registriere die Zellen zum empfangen einer NSNotification. Jedesmal, wenn ich z.B. Lichtwerte empfange wird die passende Notification ausgelöst und soll empfangen werden. Soweit die Theorie.
Das ganze läuft auch solange man nicht Scrollt oder die Werte ändert. Wenn ich jetzt z.B. ins Menü gehe und sage ich will Licht mehr angezeigt haben sondern Temperatur, das speichere und dann den TableView neu lade, bekomme ich nichts mehr angezeigt bzw. wenn ich es anders programmiere mehre Werte sekündlich wechselnd.
Ich habe rausgefunden, dass das daran liegt, dass der TableView die Zellen ja reused. Also habe ich als erstes probiert mich beim didEndDisplayCell da wieder unzuregistrieren und dann in cellForRowAtIndexPath wieder zu registrieren. Das war mäßiger Erfolg. Als nächstes habe ich direkt in cellForRowAtIndexPath versucht mich als erstes zu deregistrieren und dann wieder zu registrieren. Das ganze läuft aber nur bis ich 2-3 mal gescrollt habe.
Bei beiden Methoden tritt dann das Phänomen auf, dass man für nichts mehr registriert ist und nichts mehr angezeigt wird.
Wie kann ich das beheben? Wie man das Reusen ausstellen kann trotz dessen, dass man Storyboard, habe ich noch nicht rausfinden können. Geht das überhaupt? Klar kostet es mehr Speicher aber maximal können 10 Zellen angezeigt werden, da es nur 10 Sensor Werte gibt - also da hält sich das in Grenzen. Was kann man noch machen? Hatte jemand schon mal das Problem?
Viele Grüße und euch einen schönen Sonntag
Nils
