我的循环出了什么问题 - 循环浏览视图

时间:2011-01-23 23:24:13

标签: objective-c ios cocoa-touch

有人可以指出我的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;
}

4 个答案:

答案 0 :(得分:5)

Ian,Martin和Aram在你的代码中指出了错误。

我想指出迭代数组的另一种方式:Fast Enumeration

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

与基于C风格计数变量的迭代相比,它有几个优点,例如

  • 清洁代码 - 无需计数器变量。
  • 枚举是“安全的” - 枚举器具有变异防护,因此如果您在枚举期间尝试修改集合,则会引发异常。

答案 1 :(得分:1)

[[self myView] subviews]指的是子视图列表,而不是它们的数量。你想要的是

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

答案 2 :(得分:0)

[[self myView]subviews];会返回NSArray个观看次数,而不是int

答案 3 :(得分:0)