Как я могу изменить оттенок индекса выбранного сегмента на viewDidLoad?(На основе учебника) - PullRequest
1 голос
/ 03 февраля 2012

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

Ответы [ 2 ]

1 голос
/ 09 ноября 2016

Начиная с 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)
0 голосов
/ 04 февраля 2012

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

...