mehrere ViewControllers (containerView? childView? Instanz der viewController?)
Brauche ich, um eine neue Ansicht(w/ViewController) Hinzugefügt, über die ein anderes. Der Benutzer interagiert mit diesem neuen Blick für eine Weile, und dann möchte ich, um es zu entfernen. In einer älteren version von Xcode war ich in der Lage, fügen Sie es als Untersicht. Bekomme ich jetzt eine EXC_BAD_ACCESS error.
Ich nicht wollen, dass die hinzugefügte Ansicht als modal. Ich muss sehen, dass der ursprüngliche hintergrund durch die hinzugefügten anzeigen. Ich habe viel gelesen über den neuen custom-containerViews, addChildView, & presentView. Ich kann nicht sehen, dass jede von diesen ist die klare Antwort.
Hier ist der alte code, der vorher funktioniert -
Aktion in der main-ViewController:
-(IBAction)showWhiteView:(id)sender
{
WhiteViewController *whiteView = [[WhiteViewController alloc] initWithNibName:@"WhiteViewController" bundle:nil];
[self.view addSubview:whiteView.view];
}
Aktion in der Ansicht Hinzugefügt, um es zu entfernen:
-(IBAction)removeView:(id)sender
{
[self.view removeFromSuperview];
}
Vielen Dank für Ihre Hilfe.
Vielleicht ein VISUELLES BEISPIEL wird helfen, zu erklären, wie soll ich sagen - der Hauptansicht ist ein Ozean, mit animierten Wellen und Wolken gesteuert durch MainView-Controller. Der Benutzer tippt etwas und ich möchte hinzufügen, ein Boot(WhiteView) in die Hauptansicht. Ich will die Interaktion des Nutzers mit dem Boot: Tippen Sie hier das Segel öffnet sich, Tippen Sie auf es der Anker fällt, etc. (brauchen die Methoden der WhiteViewController) Schließlich möchte ich zum entfernen des Bootes aus dem Meer.
Dank Tim - Neuen code Hinzugefügt:
-(IBAction)showWhiteView:(id)sender
{ WhiteViewController *whiteView = [[WhiteViewController alloc] initWithNibName:@"WhiteViewController" bundle:nil];
[self addChildViewController:whiteView];
[whiteView didMoveToParentViewController:self];
[self.view addSubview:whiteView.view]; }
und innerhalb der WhiteViewController zu entfernen:
-(IBAction)removeView:(id)sender
{ [self.view removeFromSuperview];
[self removeFromParentViewController]; }
Ich freue mich auf weitere Vorschläge, macht dies besser.
Vielen Dank an alle!
Ich bin das hinzufügen der WhiteView als Kind(sub) zu den wichtigsten anzeigen.
InformationsquelleAutor Scott | 2012-03-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Siehe die Antwort hier über UIViewController containment. Ich habe ein Beispiel Projekt auf UIViewController containment hier: http://github.com/toolmanGitHub/stackedViewControllers
Hoffe, das hilft.`
Tim
Tim, ich habe ein ähnliches problem. Ich bin versucht zu haben mein Kind view-controller-Meldung der Eltern. Ich habe versucht, eine Adaption von "[(ViewController *)selbst.parentViewController swapViewControllers];" aus deinem Beispiel-code. Es sagt mir "No visible @interface for 'UIViewController' erklärt der Selektor 'myMethod'" habe ich importiert, die Eltern viewcontroller. Irgendwelche Vorschläge?
stellen Sie sicher, dass die .h-Datei, die von Ihren Eltern view-controller enthält die Erklärung der 'myMethod'. Und dann auch sicherstellen, dass die (ViewController *) ist in der Tat das parent-view-controller-name, den Sie importieren.
Das ist es. Wieder einmal hast du den Tag gerettet. Danke!!!
InformationsquelleAutor timthetoolman
dem, was ich verstanden von deiner Frage ist, dass, die Sie hinzufügen möchten eine Untersicht auf eine superview, und die müssen Benutzer interactable Recht?
so, Sie können es tun, indem Sie die folgenden Schritte aus.
Und um es zu entfernen, tun Sie den folgenden
Vergessen Sie nicht, schließen Sie das neu hinzugefügte Ansicht.
probieren Sie es aus.
InformationsquelleAutor iLearner