2012-05-09 14 views
0

ボタンをクリックしたときに初期化されるUIViewを削除しようとしています。そのボタンを2回クリックしたので、同じUIViewの2つが表示されます。最初の問題は削除できますが、同じビューの2番目のもので同じことをしようとすると何も起こりません。2つの同じUIView removefromsuperviewエラー

- (void)createStamp13 { 
    //--EDIT--// 
    stampV13Array = [[NSMutableArray alloc] initWithCapacity:3]; 
    [stampV13Array addObject:stampV13]; 

    stampV13 = [[UIView alloc] initWithFrame:CGRectMake(200, 300, 172, 330)]; 
    //[firstPage addSubview:stampV13]; 
    [firstPage addSubview:(UIView*)[stampV13Array objectAtIndex:0]; 
    //--// 
    stampV13.backgroundColor = [UIColor clearColor]; 
    stampThirteen = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"exclaim_r.png"]]; 
    stampThirteen.frame = CGRectMake(0, 0, 172, 330); 
    [stampV13 addSubview:stampThirteen]; 
} 

私はそれを作成したときのためのボタン機能である:私はここに私のコードがある ...それはそれはそれはそのが削除されて思うようにがあることを登録していない複製だから、これは理解します。これは、remove関数である:

- (void)removeImage5:(id)sender{ 
    NSLog(@"Delete StampV13"); 
    if (stampV13) { 
    [self.stampV13 removeFromSuperview]; 
    } 
} 

私は理にかなって私が説明し、私は任意の助けをいただければと思いますことを願っています!ありがとう。

答えて

0

stampV13は1つの変数であり、一度に1つのオブジェクトのみを指すことができます。 createStamp13を2回呼び出すと、変数は最初に指し示したオブジェクトのトラックを失います。これらのビューを複数コピーするには、参照を1つの変数ではなく配列に保持し、すべての配列要素で必要なものを実行します。

いくつかの追加の詳細情報:

  • は、@property (strong, nonatomic) NSMutableArray *stampV13Array;としてあなたの.hファイルにプロパティを追加し、それを合成します。
  • createStamp13コードを含むクラスの 'init ...'メソッド内でstampV13Arrayを初期化します。 (正確な方法は、そのクラスのオブジェクトをどのように作成するかによって異なります)
  • createStamp13メソッドの最初の行をUIView *stampV13 = [[UIView alloc] initWithFrame:CGRectMake(200, 300, 172, 330)];に変更します。
  • メソッドの最後に行を追加して、ビューを配列に配置します。[self.stampV13Array addObject:stampV13];

その後、stampV13を使用したときはいつでも、配列のメンバーを参照する必要があります。

+0

私は正しい軌道に乗ってくれてありがとうございました。 – Ollie177

+0

あなたが言ったことを試してみるためにいくつかの方法を試しましたが、思った通りにNSArray/NSMutableArrayに慣れていません...私があなたが意味するものの例を与えることができるかどうか疑問に思っていましたか?私はそこから働くことができるでしょうか? – Ollie177

+0

私はそれがうまくいかないかについていくつかの詳細を追加しました。まだ問題がある場合は、正確に何がわかっているか教えてください。 –

関連する問題