ViewController addSubview
Ich bin fast verrückt zu werden:
GolOlurActionViewController *golOlur = [[GolOlurActionViewController alloc] init];
[self.view addSubview:golOlur.view];
Habe ich den obigen code, und ich nenne dies in einem IBACtion
innerhalb einer ViewController
. GolOlurActionViewController
ist ein ViewController
wie Sie alle erraten können.
Wenn der Prozess beginnt, golOlur ist viewDidLoad
und viewDidAppear
- Methoden aufgerufen, aber die Aussicht ist nicht dargestellt.
Ich habe alles versucht, ich weiß aber nicht lösen konnte.
Warten Sie, ich falsch verstanden, Ihren code. Warum sind Sie versuchen, hinzufügen einer anderen view-controller-Sicht so eine Untersicht auf diese eine? Das ist nicht, wie ViewControllers Arbeit. Erstellen Sie eine view-controller für Steuern in den Blick. Es sollte geschoben werden, werden die Standard-controller, wenn verwendet. Wenn Sie nur brauchen zu erstellen eine
Auch, wenn die IBAction Methode endet, haben Sie ein problem. Wenn Sie mit BOGEN, Ihre
Ich Stimme mit Wendi, dass dieser Begriff, der mit
Du hast natürlich Recht, aber ich glaube, du bist der Lösung ein symptom (entweder undicht oder Absturz abhängig nicht von der ARC oder ARC), eher als das problem. Menschen sollten nicht über
Stimmt, aber ich hatte nicht vor, es so viel wie Sie versuchen zu lösen, nichts als zu versuchen, fügen Sie einige zusätzliche Details über, wie dieses ganze Muster ist etwas, das löst auch andere SDK-Probleme. Wenn ich sehe, bekomme ich auch die Idee, die Menschen wollen zu erstellen-container-view-Controller ohne die notwendigen Schritte zu tun, die richtige.
golOlur
- Ansicht hinzufügen, um Ihre aktuelle Ansicht, müssen Sie Unterklasse UIView
--nicht UIViewController
.Auch, wenn die IBAction Methode endet, haben Sie ein problem. Wenn Sie mit BOGEN, Ihre
GolOlurActionViewController
veröffentlicht werden, was zu Abstürzen führen kann, wenn Sie interagieren mit der Ansicht, die Sie haben, packte aus. Wenn es kein BOGEN, es ist ein Speicher-Leck.Ich Stimme mit Wendi, dass dieser Begriff, der mit
addSubview
(die überraschend weit verbreitet), um den übergang zu einer neuen Sicht stellt eine grundlegende Verwirrung, die Rolle der view-Controller vs-Ansichten. verwenden Sie nicht addSubview
Wechsel zwischen view-controller - main-Blick!Du hast natürlich Recht, aber ich glaube, du bist der Lösung ein symptom (entweder undicht oder Absturz abhängig nicht von der ARC oder ARC), eher als das problem. Menschen sollten nicht über
addSubview
für den Wechsel zwischen den Ansichten.Stimmt, aber ich hatte nicht vor, es so viel wie Sie versuchen zu lösen, nichts als zu versuchen, fügen Sie einige zusätzliche Details über, wie dieses ganze Muster ist etwas, das löst auch andere SDK-Probleme. Wenn ich sehe, bekomme ich auch die Idee, die Menschen wollen zu erstellen-container-view-Controller ohne die notwendigen Schritte zu tun, die richtige.
InformationsquelleAutor iremk | 2012-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Solltest du wirklich nicht verwenden
addSubview
wenn Ihre Absicht ist, um den übergang zwischen den Ansichten. Wenn Sie dies tun, erhalten Sie keine Drehung Ereignisse, weil Sie erlauben, Ihre view-controller Hierarchie, die out-of-sync mit der view-Hierarchie. Sollten Sie verwendenaddSubview
nur hinzufügen, eine wahre Untersicht (z.B. einUILabel
eineUIImageView
eineUIButton
usw., oder, das Kind anzuzeigen, wenn Sie richtige view-controller-Eindämmung, etc.) zu einer Ansicht. Die Verwendung vonaddSubview
für den Wechsel zwischen den Ansichten stellt eine grundlegende Verwirrung zwischen den view-Controllern und views.Den Schlüssel, um die ordnungsgemäße Verwaltung von Ihren Ansichten ist, um sicherzustellen, dass Ihre view-controller Hierarchie wird synchronisiert mit Ihrem view-Hierarchie. Der einfachste Weg dies zu tun ist, um Ihren übergang zwischen den view-Controllern und lassen Sie Sie kümmern sich um die Präsentation der eigenen Ansichten. Also, wenn Sie mit Federn, es wäre im Allgemeinen:
Oder, Federn Sie mit der navigation-controller:
Oder, wenn Sie mit storyboards (dann wieder, wenn Sie wurden mit Hilfe von storyboards, würde Sie wahrscheinlich verwenden, leitet über und bräuchten nicht irgendwelche von diesem, aber nur der Vollständigkeit halber):
und wenn Sie Ihre storyboards mit navigation-Controller:
In dem unwahrscheinlichen Fall, Sie versuchen zu tun, controller containment, lassen Sie es uns wissen, denn das ist etwas anders (dass Aufrufe zu
addChildViewController
unddidMoveToParentViewController
), aber wenn man dabei grundlegende übergang zwischen den Ansichten, die korrekte Initialisierung des Controllers und der nachfolgende AufrufpresentViewController
oderpushViewController
sollte es für Sie tun.Update:
Als schnell beiseite, wenn Sie mit storyboards (ich glaube nicht, dass Sie sind, aber nur für den Fall), eher als
instantiateViewControllerWithIdentifier
, ich würde sogar vorschlagen, dass Sie definieren ein übergang auf dem storyboard, stellen Sie es mit einem id-string im Interface Builder, und verwenden Sie dann den folgenden code, um den übergang zur nächsten Szene:Wenn Sie es so machen, es kümmert sich um die Instanziierung Ihrer controller-für Sie und den Ablauf des gesamten app wird genau dargestellt, in das storyboard.
InformationsquelleAutor Rob
Ich glaube, dein Problem ist, dass Sie erwarten, dass die view in einem storyboard oder .xib zu zeigen, wenn Sie erstellen Sie eine UIViewController so, wie Sie sind, das wird nicht funktionieren. Sie müssen entweder Draht, einem push segue in das storyboard (die verlangen, dass ein
UINavigationController
), oder die neue controller-Modal, die Sie auch im storyboard. Wenn Sie eine Feder für diese ViewController, können Sie dies tun:InformationsquelleAutor Regan