0

ボタンがクリックされたときに初期化される UIView を削除しようとしています。そのボタンを 2 回クリックしたので、同じ UIView が 2 つ表示されます。最初のものは問題なく削除できますが、同じビューの2番目のもので同じことをしようとすると何も起こりませんか? これは、削除されたと考えているため、そこにあることを登録しない重複であるためだと思います...これが私のコードです:

- (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];
}

それは私がそれを作成するときのボタン機能です。これは削除機能です:

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

私が説明したことが理にかなっていることを願っています。ありがとう。

4

1 に答える 1

0

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

いくつかの追加の詳細:

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

その後、使用していた場所で配列のメンバーを参照する必要がありますstampV13

于 2012-05-09T12:09:23.093 に答える