0

UILabels、UISliders、UITextboxesなどを含むUIViewがあります。スライダーだけでアクションを実行したい。これはどのように行われますか?現在、私は持っています

int count = 0;
for (UIView *subview in [myView subviews])
{
  if ([subview isKindOfClass:[UISlider class]]);
  {
    [subview removeFromSuperview];
    NSLog(@"Class for object removed is %@",[subview class]);
    count ++;
  }
  //else{do nothing - subview isn't a slider, so I don't care about it}
}
NSLog(@"count = %d",count);

このコードを実行すると、すべてが影響を受けます(スライダー、ラベル、テキストボックス、その他すべて)。私が他の投稿を読んで集めたものから、配列でisKindOfClassを使用するのはちょっとグリッチですが、それはやろうとしたときだけだと思いましたisKindOfClass:[NSArray class]。それとも私はそれについて間違っていますか?このループisKindOfClass内のネストがfor許可されていない場合、ビューの特定のアイテムに対してアクションを実行するにはどうすればよいですか?

編集:これの1つの実装のためのコード全体を追加しました。カウントはオフであり、NSLogはUILabelのすべてが削除されていることを教えてくれます。これが実行された後、私のビューはすべて完全に空になります。

編集2:;実際のコードにあるようなifステートメントの最後に追加されました。コードから削除したところ、期待どおりの動作が得られました。

4

2 に答える 2

0

たぶん、isKindOfClassの代わりにisMemberOfClassを使用してみてください

于 2012-11-15T16:24:28.400 に答える
0

タイプミスがあったことが判明しました。私の;ifステートメントの最後にあるのは、基本的に、そこにまったく入っていないようになっているifため、すべてが私のビューから削除されていました。;質問の作成されたコードを削除すると、意図したとおりに機能します。

于 2012-11-16T16:51:14.710 に答える