2011-01-23 47 views
1

有人能指出我的循环出了什么问题吗?我试图循环通过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];返回的意见NSArray,而不是一个int

5

伊恩·马丁和亚兰在你的代码中指出的错误。

我想指出,通过循环访问数组的另一种方式:Fast Enumeration

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

它拥有超过C风格的计数变量基于迭代几个优点,如

  • 简洁的代码 - 无计数器变量需要。
  • 枚举是“安全的” - 枚举器具有突变保护,因此如果您尝试在枚举过程中修改集合,则会引发异常。