2012-04-10 14 views
0

Ich bin neu auf iOS-Entwicklung, und ich habe ein Problem möchte Sie fragen.Fehler beim Entfernen einer Ansicht von superview

Mein Zweck ist eine Ansicht (nicht Vollbild) auf Basisansicht anzuzeigen und immer noch ein Elternteil auf der Rückseite außerhalb der Unteransicht zu sehen. So habe ich eine Subview (Unterklasse von UIViewController) auf den aktuellen Viewcontroller, dann tun, um i die subview zu öffnen:

AViewController *a = [[AViewController alloc] initWithNibName:nil bundle:nil]; 
[self.view addSubView:a.view]; 
[a release]; 

Hier funktioniert es und zeigen diese Subview, wie ich erwartet hatte. Auf dieser subview, sie hat Schließen-Schaltfläche diese Subview zu schließen und wie diese auf subview tun:

- (IBAction)BackTouchUp:(id)sender 
{ 
    [self.view removeFromSuperview]; 
} 

Wenn i-Taste zum Schließen klicken, ich habe einen Fehler EXC_BAD_ACCESS. Wenn ich den [a release] -Befehl des Elternteils lösche, funktioniert es, aber es gibt einen Speicherverlust.

Können Sie mir bitte die Ursache dieses Fehlers erklären und wie Sie diesen Fall lösen können?

Antwort

0

Defina AViewController Objekt (AViewController * a) in-Schnittstelle und bei der Umsetzung initialisieren den Wert wie unter

a = [[AViewController alloc] initWithNibName: nil Bündel: nil];

[self.view addSubView: a.view];

und wann immer Sie einfach entfernen möchten setzen [ein removeFromSuperview] und in dealloc
[a release]

+0

Danke für Antwort. Wie Sie sagten, ist eine Instanzvariable des Elternteils, oder? Aber [ein removeFromSuperview] ist im Code der Kindansicht, wie kann ich auf eine Variable des Elternteils zugreifen? – hieund

+0

über Delegate-Methode, erstellen Sie benutzerdefinierte Delegat oder Post Notification für die gleiche. – Mangesh

0

können Sie das eine Ansicht Tag-Satz keine

[a.view setTag:3]; 
uiView *f=[self.view viewWithTag:3]; 
[f removeFromSuperview]; 

Ich denke, das Ihr Problem lösen

+0

Ich denke, es in AViewController – beryllium

+0

versuchen, diese nach dem Bearbeiten aufgerufen wurde –

Verwandte Themen