0

私は次のコードを持っています:

    for (NSImageView *image in self.view.subviews) {
        if (image.frame.size.height == 67 && image.frame.size.width == 46) {
            [image removeFromSuperview];
        }
    }

これは、ボタンが押されたときに呼び出されます。これらのディメンションを持つ各NSImageViewを削除する必要があります。問題は、1つだけを削除することです。画像をクリアするには、ボタンを何度もクリックし続ける必要があります。それらは4つあります。

ただし、生成されるログには、毎回最後の行が削除されていることが示されていることに気付きました。これらの画像は最上位のレイヤーであるため、推測しています。

だから私の質問は、高さが67、幅が46の各NSImageViewが一度にビューから削除されるようにするにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1

4

配列の変更エラーにより、コードの実行が妨げられるはずです。代わりにこれを使用してください:

NSArray *copy = [self.views.subviews copy];

for (NSImageView *image in copy) {
    if (image.frame.size.height == 67 && image.frame.size.width == 46) {
        [image removeFromSuperview];
    }
}
于 2013-02-06T02:15:18.737 に答える