2011-01-23 26 views
1

私のforループで何が間違っているかを指摘できますか?私はUIImageViewsをループして、すべて隠してみようとしています。すべてのサブビューはUIImageViewsです。前もって感謝します。私のループで何が問題になっていますか?

int i; 
int num = [[self myView]subviews]; 
for (i=0; i<num; i++) 
{ 
    UIImageView *currentView = [self.tabber.subviews objectAtIndex:i]; 
    currentView.hidden = YES; 
} 
+0

私はあなたのコードはそれを作っていないと思う:P –

答えて

1

[[self myView] subviews]は、サブビューのリストであり、サブビューの数ではありません。あなたが欲しいものは

for(i = 0; i < [[[self myView] subviews] count]; i++) 
+0

ありがとう。画面に近すぎる。 – intomo

+0

コンパイラーは、違反行についての警告(「初期化によってポインタから整数になります」)を表示します。コンパイラの警告を無視しないでください。 –

0

[[self myView]subviews];ビューないintNSArrayを返します。

5

イアン、マーティンとアラムは、あなたのコード内のエラーを指摘しました。

私は、配列を反復処理の別の方法を指摘したい:Fast Enumeration

for (UIView *view in [self.myView subviews]) 
{ 
    view.hidden = YES; 
} 

それは、このような

  • クリーンなコードとしてCスタイルのカウント変数に基づく反復、いくつかの利点を持っている - なしカウンタ変数が必要です。
  • 列挙型は「安全」です。列挙型には突然変異ガードがあるため、列挙中にコレクションを変更しようとすると例外が発生します。
関連する問題