2016-06-24 18 views
0

Ich habe ein bisschen eine seltsame Frage für eine temporäre Lösung, die wir in unsere App einfügen. Aus schrecklichen Gründen haben wir ein segmentiertes Steuerelement mit drei Segmenten, aber wir haben drei Instanzen jedes segmentierten Steuerelements innerhalb von drei tableView-Datenquellen (fragen Sie nicht, wir hoffen, dass dies nicht die endgültige Lösung ist ...)Segmentsegment von Änderung nicht zulassen

Wie auch immer, wegen dieses schrecklichen Setups, wenn wir ein neues Segment auswählen, wird Instanz A des segmentierten Steuerelements seinen neuen Index ausgewählt. Wir tauschen dann Datenquellen aus und rufen reloadData auf dem Tisch an. Jetzt haben wir Instanz B des segmentierten Steuerelements mit demselben Index wie Instanz A ausgewählt. Wenn wir dann das ursprüngliche Segment auswählen, wird für Instanz B der Index auf den neuen Index gesetzt, und wir laden Daten neu, wodurch die Instanz A angezeigt wird. Instanz A hat jedoch immer noch den alten Index ausgewählt, und so zeigt die Auswahl den falschen Index an.

Ich löse dies derzeit, indem ich den ausgewählten Index im Delegate-Callback für einen Tap manuell zurücksetzt. Was jedoch ideal wäre, wäre, der segmentierten Steuerung zu sagen, dass sie nicht möchte, dass sie ihre Auswahl ändert, aber ich möchte immer noch, dass Benutzer in der Lage sind, damit zu interagieren. Ist das überhaupt möglich? Mir ist klar, dass dies eine schreckliche Lösung ist, wir hoffen, dass wir das in Zukunft ändern werden, also vorerst irgendwelche Vorschläge für mich?

Antwort

1

Im letzten Schritt, wenn Instanz A des segmentierten Steuerelements erneut angezeigt wird, sollten Sie Ihren cellForRowAtIndexPath schreiben, um das Segment mithilfe der Eigenschaft selectedSegmentIndex auf das gewünschte Segment zu setzen. Wenn Instanz A erneut angezeigt wird, wird der richtige Index angezeigt.

+0

Ich habe jetzt etwas sehr ähnliches im Laufen, nachdem ich das ganze für neue Daten abgeholt habe, setze ich das Segment zurück auf das richtige Segment. Dies fühlt sich jedoch hacky an, was nicht das Schlimmste auf der Welt ist, da die segmentierte Kontrolle als Zelle an erster Stelle ein Hack ist, aber ich möchte versuchen, die "Hackigkeit" dieses Fixes zu erhalten ein Minimum, wenn möglich. –

+0

Es klingt wie das "hacky" Schiff vor langer Zeit gesegelt. Jetzt versuchst du nur, das Chaos, das du gemacht hast, richtig zu machen. –

Verwandte Themen