2012-02-03 30 views
1

我跟着以下教程改变分段控制的颜色: http://goddess-gate.com/dc2/index.php/post/454如何更改viewDidLoad上选定片段索引的色调? (在基于教程)

然而,我在努力理解代码和加载与所选段的图。换句话说,我已经设法将我的分段控件的颜色更改为黑色,但只有当我选择一个段而不是加载视图时才会发生这种情况。当我加载视图时,它只显示为灰色。另外,如果我想重置为原始灰色或改变分段控制的颜色,将会出现,我该如何消除黑色并返回灰色且未选中的所有内容?

有人能指出我究竟是什么,为什么需要添加到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]; 
} 
} 

回答

0

在-viewDidLoad,尝试调用[self seleccionarSegmented:miSegmentedControl](希望我有名字的权利

1

由于快速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) 
相关问题