Как я могу изменить оттенок выбранного индекса сегмента на viewDidLoad? (на основе учебника)

Я следовал следующему руководству, чтобы изменить цвет сегментированного элемента управления: http://goddess-gate.com/dc2/index.php/post/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];
}
}

person ibjazz    schedule 03.02.2012    source источник


Ответы (2)


Начиная с Swift 3, поместите этот код внутри viewDidLoad() или ViewDidAppear()

//this sets the value of the index that you want to call
let segmentedControlIBOutlet = 0

//this calls the actions for that index
segmentedControlAction(segmentedControlIBOutlet as AnyObject)
person Fidel    schedule 09.11.2016

В -viewDidLoad попробуйте вызвать [self seleccionarSegmented:miSegmentedControl] (надеюсь, я правильно назвал имена.

person Carl Veazey    schedule 03.02.2012