2011-08-09 13 views
2

私は2つのメソッド_addView()と_removeView()を持っているクラスが1つあります。スーパービューでサブビューを数える方法

これらのメソッドは、ビューを追加したりビューを削除するために別のクラスで使用していますが、動作していません。私は、そのクラスにサブビューを数えるか、そのクラスから削除する方法次にRemove-

- (id)deleteBoxAtIndex:(int)boxIndex{  
    for (int i = 0; i < [[self subviews] count]; i++) { 
     [[[self subviews] objectAtIndex:boxIndex] removeFromSuperview]; 
    } 

    return self; 
} 

については

答えて

3

あなたが呼び出すことができるように、あなたが他のオブジェクトにUIViewインスタンス(subview秒を持っている1)へのポインタを渡す必要があります。

myView.subviews 

これがために働くことができれば、私は知りませんあなた:

あなたが言及二つのクラス間の関係についてのより詳細な情報を与える場合
- (id)deleteBoxAtIndex:(int)boxIndex fromView:(UIView*)view {  
    for (int i = 0; i < [[view subviews] count]; i++) { 
    [[[view subviews] objectAtIndex:boxIndex] removeFromSuperview]; 
    } 

    return self; 
} 

(基本的には、名前とどのように他との相互作用1)は、私はあなたより多くのヒントを与えることができます。

+0

おかげで私の問題は – iPhonedev

1

あなたの問題はカウントを取得するのではなく、forループロジックの実行の中で動的に変化するカウントのリレーです。次のようにサブビューのクリーンアップを行います。

while([[self subviews] count] > 0) { 
    UIView *view = [[self subviews] objectAtIndex:0]; 
    [view removeFromSuperview]; 
} 
0

あなたはスーパーのプロパティを使用することができます。

[[self superview] subviews] 


をあなたは右の行を行っている同様のループを行うこと。しかし、私は強く代わりobjectAtIndexの

[[self superview] viewWithTag:boxIndex] 

使用することをお勧めしたい:

7

あなたはサブビューの数をカウントする[self.subviews count]を使用しようとする際に訂正方法を、しかしからすべてのサブビューを削除するエレガントな方法がありますObjective-Cのビューこれを試してみてください:

[self.subviews makeObjectsPerformSelector:@selector(removeFromSuperView)]; 
+0

+1を解決しています。火格子の先端用。新しい何か新しい毎日を学ぶ:-) – Cyprian

+0

removeFromSuperViewの代わりに@selector(removeFromSuperview)が私のために働いた... –

0

ちょうどuは削除したいすべてのサブビューのループを実行します。あなたの答えのための

for (UIView *subs in [self.view subviews]){ 
    [subs removeFromSuperview]; 

} 
関連する問題