2017-01-16 4 views
7

Um eine Subview in UIStackView zu verstecken ist es besser, die isHidden auf true zu setzen oder removeArrangedSubview zu verwenden und die Subview von der Mutter Stackview stattdessen entfernen?Ausblenden der Subview in UIStackview in ios

Ich verwende eine Stackview, um meine UIElements in der Tabelle TableView anzuordnen. Ich habe derzeit ein Elternteil StackView und eine ChildStackview im Inneren angeordnet. Die untergeordnete Ansicht muss basierend auf einer Bedingung ein- oder ausgeblendet werden. Ich setze die Eigenschaft isHidden der untergeordneten Ansicht auf wahr, wenn die Bedingung wahr wird.

Wenn ich scroll und neue Zellen kommen sichtbar werden bekomme ich die folgenden Meldungen in der Konsole. Die App stürzt nicht ab.

NSLayoutConstraint: 0x600000093470 'UISV-Leinwand-Verbindung' UIStackView: 0x7fd4527201b0.top == UILabel. 0x7fd452720370'Day Off - Ruhe und Schlaf ... "top (aktiv)

a Stellen Symbolischer Haltepunkt bei UIViewAlertForUnsatisfibableConstraints, um dies im Debugger abzufangen. Die Methoden in der UIConstraintBasedLayoutDebugging-Kategorie in UIView, die in <UIKit/UIView.h> aufgelistet sind, können ebenfalls hilfreich sein. [LayoutConstraints] Einschränkungen können nicht gleichzeitig erfüllt werden. Wahrscheinlich ist mindestens eine der Einschränkungen in der folgenden Liste eine, die Sie nicht möchten.
Versuchen Sie folgendes:

  1. Blick auf jede Einschränkung und versuchen, die Sie nicht erwarten, um herauszufinden;
  2. Suchen Sie den Code, der die unerwünschte Einschränkung oder Einschränkungen hinzugefügt und behoben hat. ( "", "", "", "", "", "", "" )

Wird durch Brechen Einschränkung

+1

Wie die meisten Fragen, welcher Ansatz besser ist, hängt die Antwort von Ihrer speziellen Situation ab. Können Sie ein paar weitere Details angeben? – Jim

+0

Vielen Dank Jim, ich habe One eine ParentStackView und eine ChildStackview ineinander eingefügt. Ich muss die Childstackview basierend auf einer Bedingung verbergen. Wenn ich den isHidden der Kind-Stackview auf true setze, erhalte ich folgende Meldung im Konsolenprotokoll von xcode. Es stürzt die App jedoch nicht ab. Ich bekomme diesen Fehler nicht in der Lage Constraints gleichzeitig zu erfüllen. Wahrscheinlich ist mindestens eine der Einschränkungen in der folgenden Liste eine, die Sie nicht möchten.\t Will versuchen, durch das Brechen der Beschränkung zu erholen – jay

+0

Jay, gehen Sie voran und redigieren Sie Ihre Frage und fügen Sie dieses Detail dort hinzu, bevor Leute es abmelden, um kein Detail zu haben. Nehmen wir an, die Child-Stack-Ansicht verschwindet (Sie verstecken sie oder verwenden removeArranedSubview). Willst du es jemals wieder kommen? – Jim

Antwort

8

zu erholen versuchen, zu beantworten Ihre erste Frage: Wenn Sie die Unteransicht nicht anzeigen müssen, ist es am logischsten, sie mit removeArrangedSubview(UIView) zu entfernen. Wie Sie vielleicht wissen, aktualisiert die Stapelansicht automatisch ihr Layout, wenn Ansichten hinzugefügt, entfernt, eingefügt oder ausgeblendet/eingeblendet werden.

Die Warnung, die Sie in der Konsole über die Einschränkungen erhalten, hängt möglicherweise nicht von dem ab, was Sie gerade für die Unteransicht implementiert haben. Haben Sie es erwähnt, weil Sie denken, dass es verwandt sein könnte?

Hoffe, dass hilft.

+0

Danke Jim, es hilft, eine konzeptionelle Klarheit zu bekommen. Ich dachte, sie waren verwandt, als ich diese Meldungen in der Konsole sah, nachdem ich die Stapelansicht implementiert hatte. – jay

+0

Gern geschehen, Jay. Da du neu bei der Frage bist, was hier gefragt wird (willkommen übrigens), mach weiter und markiere meine Antwort als die richtige, wenn sie dir geholfen hat und du damit zufrieden bist. Wenn Sie weiterhin Probleme mit den widersprüchlichen Einschränkungen haben, stellen Sie eine weitere Frage und denken Sie daran, die wichtigen Details anzugeben. Diese Einschränkungsprobleme können wirklich schwierig zu lösen sein. – Jim

+0

fertig !, ich habe die Antwort markiert. Und die Einschränkungsfehler traten auf, weil ein Bild nicht in der Bildansicht war. Sobald ich das Problem behoben hatte, verschwanden auch die Fehler. – jay

Verwandte Themen