【发布时间】:2015-05-06 17:53:10
【问题描述】:
我正在使用以下代码来设置 UISegmentedControl 中每个段的颜色。
for (int i = 0; i < [self.controlStatus numberOfSegments]; i++)
{
NSArray *ar=self.controlStatus.subviews;
if ([[self.controlStatus titleForSegmentAtIndex:i] isEqualToString:@"ON"])
{
[[self.controlStatus.subviews objectAtIndex:i] setTintColor:[UIColor greenColor]];
}
else if ([[self.controlStatus titleForSegmentAtIndex:i] isEqualToString:@"OFF"])
{
[[self.controlStatus.subviews objectAtIndex:i] setTintColor:[UIColor orangeColor]];
}
else if ([[self.controlStatus titleForSegmentAtIndex:i] isEqualToString:@"HIDE"])
{
[[self.controlStatus.subviews objectAtIndex:i] setTintColor:[UIColor redColor]];
}
}
}
但我没有在相应的细分中获得所需的颜色。有时颜色如下:
第一段 - 绿色
第二段 - 橙色
第三段 - 红色
但是在某个阶段,当我导航到其他页面并返回时,颜色会发生变化:
第一段 - 红色
第二段 - 橙色
第三段 - 绿色
谁能告诉我这里发生了什么。
【问题讨论】:
-
你搞乱了分段控件的私有子视图结构。这总是一个坏主意。您的代码假定子视图与段的顺序相同。错误的假设。
-
你能给我一些建议吗?
-
为任何可能在未来寻找答案的人留下评论。这是一种非常肮脏的方式,但是如果您真的必须这样做:我所做的是,在第一次初始化视图控制器时,以正确的顺序将子视图保存在我的数组中。每次您选择另一个分段时,分段控件的子视图都会随机播放,但在您的数组中,它们会以正确的顺序保存。然后您可以操作背景颜色。
标签: ios objective-c uisegmentedcontrol