0

我正在运行此代码,因为我想ViewController在它启动时更改我的所有按钮上的某些内容。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    int i = 1;
    
    for (UIButton *btn in self.view.subviews)
    {
        NSLog(@"Count I - %d ", i);
        //NSLog(@"Count I - %d - %@", i, btn.titleLabel.text);
        
        i++;
    }
}

输出它:

2013-11-11 08:15:13.315 testingSingle[7876:a0b] Count I - 1

2013-11-11 08:15:13.317 testingSingle[7876:a0b] Count I - 2

现在这对我来说似乎很奇怪,因为它是一个新项目,在故事板或代码中的 VC 上没有任何内容被拖到甚至更改 - 没有任何迹象表明有 2UIButton秒。

return 0如果是这种情况,我该如何收到此消息?我的应用程序因此崩溃。

4

1 回答 1

2

将您的 NSLog 更改为

NSLog(@"%@", [btn class]);

给出输出

_UILayoutGuide
_UILayoutGuide

这表明没有按钮,但有一些其他视图(可能需要自动布局)。

for (UIButton *btn in self.view.subviews)

枚举所有子视图,循环变量btw声明为UIButton *. 要仅处理按钮,您必须测试每个对象的类:

for (UIView *subView in self.view.subviews) {
    if ([subView isKindOfClass:[UIButton class]]) {
        UIButton *btn = (UIButton *)subView;
        // Do something with btn ...
        i++;
    }
}
于 2013-11-10T19:26:18.063 回答