2009-06-12 7 views
0

Ich bin sehr neu in Obj-C und lernen iPhone-Entwicklung. Meine Frage ist, wie Subview von App-Delegate hinzufügen. Nehmen wir an, ich habe Teilansicht namens "MainView" von "applicationDidFinishLaunching" -Methode hinzugefügt.Wie wird die Unteransicht von der Hauptansicht geladen?

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

MainViewController *aViewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil]; 
self.mainViewController = aViewController; 
[aViewController release]; 

[window addSubview:mainViewController.view]; 
// Override point for customization after application launch 
[window makeKeyAndVisible]; 

}

"MainView.xib" Datei hat eine Schaltfläche, um die untergeordneten Ansicht zu zeigen. Wenn Sie auf die Schaltfläche klicken, wird die Methode "showChildView" aufgerufen.

Aus diesem Code, wenn App startet, zeigt es "MainView" mit einer Schaltfläche. Aber als ich auf den Button geklickt habe, ist der Button immer noch sichtbar, ebenso der Inhalt aus der "ChildView.xib" Datei.

Wie kann ich die "MainView" ausblenden, wenn ich den Knopf drücke und nur den Inhalt von "ChildView" zeige?

Vielen Dank für Ihre Hilfe im Voraus.

Antwort

0

gut, müssen Sie zuerst die ursprüngliche Ansicht entfernen, bevor die neue subview Einsetzen tun es auf diese Weise

- (IBAction)showChildView:(id)sender { 
    if (self.childViewController == nil) { 
     ChildViewController *childController = [[ChildViewController alloc] initWithNibName:@"ChildView" bundle:nil]; 
     self.childViewController    = childController; 
     [childController release]; 
    } 
    [self.mainViewControlle.view removeFromSuperView]; 
    [self.view insertSubview:childViewController.view atIndex:0]; 
} 

Hoffnung, das hilft.

+0

Da diese Funktion, "showChildView:" in "MainViewController.m" definiert ist, würde "[self.mainViewController.view removeFromSuperView]" Nachricht funktionieren? Wenn ich das Projekt mit dieser Codezeile erstellen, hat es Compier-Fehler: "Anforderung für Member 'MainViewController' in etwas nicht in einer Struktur oder einer Union." Irgendeine Idee, was hier passiert? – sungl

+0

wie über MyAppDelegate * appDelegate = (MyAppDelegate *) [[UIApplication sharedApplication] Delegat]; MainViewController * main = (MainViewController *) [appDelegate mainViewController]; UIWindow * window = (UIWindow *) [Fenster appDelegate]; [main.view removeFromSuperView]; [Fenster addSubview: childViewController.view]; – Zteeth

0

Sie können das Utility-App-Beispiel ausprobieren - es wird gezeigt, wie Sie zwischen zwei Ansichten mit Animation wechseln und Ansichten aus übergeordneten Ansichten hinzufügen/entfernen.

+0

Vielen Dank für den Tipp! Es sieht sehr hilfreich aus. :) – sungl

0

möchten Sie vielleicht einen Navigationscontroller in der Hauptansicht erstellen und dann den childviewcontroller darauf drücken, wenn Sie showChildView aufrufen. Sie erhalten die Zurück-Navigation-Taste kostenlos so

+0

Danke. Es ist eine andere großartige Idee! – sungl

Verwandte Themen