2012-04-10 17 views
0

私はiOS開発で新しく、問題が発生しました。スーパービューからビューを削除するとエラーが発生する

私の目的は、ベースビューでの表示(フルスクリーンではない)を表示し、サブビュー外の背面に親が表示されるようにすることです。 だから私は、私はサブビューを開くために行う、現在のViewController時にサブビュー(のUIViewControllerのサブクラス)を追加しました:

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

それが動作すると私は予想通り、このサブビューを示しました。このサブビューでは、私はこのサブビューを閉じて、サブビューに、次のように行うには閉じるボタンを持っている:私はボタンを閉じるためにクリックすると

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

は、私は、エラーEXC_BAD_ACCESSを得ました。私は親の[リリース]コマンドを削除すると動作しますが、メモリリークがあります。

このエラーの原因とその解決方法を教えてください。

答えて

0

Defina AViewControllerオブジェクトが

以下のような値を初期化すると思います

= [[AViewController alloc] initWithNibName:nil bundle:nil];

[self.view addSubView:a.view];

、あなたは単に削除[removeFromSuperview]を入れてのdealloc
[リリース]

+0

後にこれを試してAViewController – hieund

+0

を作成するか、カスタム代理人を作成するか、同じものについて投稿通知を行います。 – Mangesh

0

ビュータグなし

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

を設定することができ、私は(AViewController * a)のインタフェースのと実装では、この問題を解決します

+0

にしたい時はいつでも、私はそれが編集 – beryllium

+0

で呼ばれていたと思いますが答えをいただき、ありがとうございます。あなたが言ったように、aは親のインスタンス変数ですね。しかし、[removeFromSuperview]は子ビューのコードにありますが、どのように親の変数にアクセスできますか?代理人メソッドを使用して –

関連する問題