我有一些代码可以在uiview中创建,添加和标记uiview中的unbuttons.在某一点上,我尝试用某些标签更改(背景颜色和图像)一些解开按钮.问题是如果我选择带有标记0的第一个按钮,for循环炸弹用于图像更改,因为uiscrollview或uiview没有该方法可用.但我试图只针对视图中的解开按钮(全部同步).如果我选择任何其他按钮,它按预期工作.我可以将标签从0偏移到1,但我想知道为什么我的for循环不起作用.
for (int i=0; i<[devicesArray count]; i++) {
NSLog(@"red %i", i);
for (UIView *subview in [uiv_ButtonsView subviews]) {
if([subview isKindOfClass:[UIButton class]]) {
int number = [[devicesArray objectAtIndex:i] intValue];
subview.alpha=1.0;
[[subview viewWithTag:number] setBackgroundColor:[UIColor redColor]];
UIButton *btttn = (UIButton *)[subview viewWithTag:number];
[btttn setBackgroundImage:nil forState:UIControlStateNormal];
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢 - 这是现在正在运行的代码:
for (int i=0; i<[devicesArray count]; i++) {
int number = [[devicesArray objectAtIndex:i] intValue];
[[uiv_Quilt viewWithTag:number] setBackgroundColor:[UIColor redColor]];
[[uiv_Quilt viewWithTag:number] setBackgroundImage:nil forState:UIControlStateNormal];
}
Run Code Online (Sandbox Code Playgroud)
for (UIView *subview in [uiv_ButtonsView subviews]) {
Run Code Online (Sandbox Code Playgroud)
subView 是uiv_ButtonsView的子视图
if([subview isKindOfClass:[UIButton class]]) {
Run Code Online (Sandbox Code Playgroud)
subView 是一个 UIButton
[[subview viewWithTag:number] setBackgroundColor:[UIColor redColor]];
Run Code Online (Sandbox Code Playgroud)
嗯.现在,你得到一个子视图中的UIButton的,具有触杀0 -这是所有视图的默认标签.你在这里是UIButton的私人视图层次结构,我们不知道这是什么.
UIButton *btttn = (UIButton *)[subview viewWithTag:number];
Run Code Online (Sandbox Code Playgroud)
同样 - 你告诉编译器你从这个电话回来了一个按钮,但你不会.subView已经是一个按钮,按钮没有其他按钮作为子视图.
[btttn setBackgroundImage:nil forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
所以这行代码不起作用.
我不明白你为什么要做你所有的操作subView,或者[uiv_ButtonsView viewWithTag:xx]用来拿你的按钮.在后一种情况下,您需要将标记设置为1,因为所有视图的默认标记都为0.
| 归档时间: |
|
| 查看次数: |
2087 次 |
| 最近记录: |