2016-04-13 12 views
0

ich diesen UIView haben, die ihre Zwänge, Einschränkungen hat, ist auf der übergeordneten Ansicht, die UIViewController ist, jedes Mal, wenn ich die Beschränkungen festgelegt, muss ich die currentViewController passieren, so kann er dies tun:Zugang UIViewController aus View

currentViewController.view.addConstraint(...) 

Ich möchte, dass die Ansicht in der Lage ist, die Einschränkung zu setzen, in welcher Ansicht auch immer, ich möchte meiner Sicht die Verantwortung geben, die Beschränkungen an ihre Eltern zu legen, ohne sie als Argument übergeben zu müssen, wie mache ich das ? Ich habe einige Antworten in Objective-C gesehen, aber ich möchte es in Swift machen, und ich weiß nicht wie.

Ich habe versucht mit view.superView, aber es hat nicht funktioniert.

Antwort

0

Ja, Sie sollten definitiv view.superview verwenden, um Einschränkungen einzurichten. Beachten Sie jedoch, dass Sie Einschränkungen nur hinzufügen sollten, wenn Ihre Ansicht Teil dieser Hierarchie ist. Dies bedeutet, dass sie bereits in einer Ansicht enthalten sein sollte (view.superview != nil).

Als Ablauf sollten Sie zuerst Ihre Ansicht als Unteransicht zu einer anderen Ansicht hinzufügen und dann die Einschränkungen basierend auf view.superview anpassen.

+0

ill versuchen, dies zu tun, aber ich kam mit dieser Idee, wenn ich meine Sicht initialisieren, ich überlasse es ihre Elternansicht und dann habe ich Eltern als Eigentum, ist es eine gute Idee oder nicht? – nikagar4

+0

auch, ich möchte die Einschränkungen bei der Initialisierung festlegen, so dass ein Problem, ich muss es initialisieren, dann subview es, was unmöglich ist, denke ich ?? – nikagar4

+0

Warum brauchen Sie die Elternansicht als Eigenschaft, wenn Sie sie bereits als 'view.superview' haben? Im Zusammenhang mit Ihrer Idee glaube ich nicht, dass ich es habe, aber die Hauptregel ist, dass Sie einer Ansicht Einschränkungen hinzufügen können, wenn es sich um eine Unteransicht einer anderen Ansicht handelt. –