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!

Sie können nicht entfernen Sie die base view oder die Eltern anzeigen. hinzufügen können Sie Ihr Kind Blick auf eine übergeordnete Sicht. also, wenn Sie entfernen übergeordnete Ansicht, die Sie bekommen die EXE_BAD Fehler
Ich bin das hinzufügen der WhiteView als Kind(sub) zu den wichtigsten anzeigen.

InformationsquelleAutor Scott | 2012-03-27

Schreibe einen Kommentar