Я следовал следующему руководству, чтобы изменить цвет сегментированного элемента управления:
http://goddess -gate.com / DC2 / index.php / запись / 454
Однако я изо всех сил пытаюсь понять код и загрузить представление с выбранным сегментом. Другими словами, мне удалось изменить цвет моего сегментированного элемента управления на черный, но это происходит только при выборе сегмента, а не при загрузке представления. Когда я загружаю вид, он отображается только серым цветом. Кроме того, если я хочу сбросить на исходный серый цвет или изменить цвет сегментированного элемента управления, в поле зрения, как я могу устранить черный цвет и вернуться ко всему серому и не выбранному?
Может кто-нибудь указать мне, что именно и почему, мне нужно добавить в метод viewDidLoad или viewWillAppear?
Вот также код:
NSInteger static compareViewsByOrigin(id sp1, id sp2, void *context)
{
// UISegmentedControl segments use UISegment objects (private API). Then we can safely
// cast them to UIView objects.
float v1 = ((UIView *)sp1).frame.origin.x;
float v2 = ((UIView *)sp2).frame.origin.x;
if (v1 < v2)
return NSOrderedAscending;
else if (v1 > v2)
return NSOrderedDescending;
else
return NSOrderedSame;
}
И метод действия
-(IBAction)seleccionarSegmented:(id)sender {
int numSegments = [miSegmentedControl.subviews count];
for( int i = 0; i < numSegments; i++ ) {
[[miSegmentedControl.subviews objectAtIndex:i] setTintColor:nil];
[[miSegmentedControl.subviews objectAtIndex:i] setTintColor:[UIColor colorWithRed:200/255.0 green:200/255.0 blue:200/255.0 alpha:1]];
}
NSArray *sortedViews = [miSegmentedControl.subviews sortedArrayUsingFunction:compareViewsByOrigin context:NULL];
[[sortedViews objectAtIndex:miSegmentedControl.selectedSegmentIndex] setTintColor: [UIColor blackColor]];
for (id view in miSegmentedControl.subviews) {
[view removeFromSuperview];
}
for (id view in sortedViews) {
[miSegmentedControl addSubview:view];
}
}