2013-07-23 30 views
0

我正在嘗試設置tintColor併爲UISegmentedControl選擇tintColor。UISegmentedControl選擇了tintColor on viewLoad

到目前爲止,除了當視圖第一次加載時,即使我調用我的方法來設置tintColor(並執行它),tintColor在第一次單擊之前也不會正確設置。

但確實出現,但好像東西正在發生,因爲我試圖將顏色設置爲黑色與白色選擇,並且默認的顏色是一個黑暗。

有關如何實際修改加載顏色的任何想法?

//some code 
-(void)viewDidLoad 
_segmentedControl.selectedSegmentIndex = 0; 
[self segmentedControl:_segmentedControl]; 

//set color method 
- (IBAction)segmentedControl:(BaseSegmentedControl *)sender 
{ 
//change the color of every subview(segment) you have 
for (int i = 0; i < [[sender subviews] count]; i++) 
{ 
    if ([[sender.subviews objectAtIndex:i]isSelected]) 
    { 
     [[sender.subviews objectAtIndex:i] setTintColor:nil]; 
     [[sender.subviews objectAtIndex:i] setTintColor:[UIColor whiteColor]]; 
    } 
    else 
    { 
     [[sender.subviews objectAtIndex:i] setTintColor:nil]; 
     [[sender.subviews objectAtIndex:i] setTintColor:[UIColor blackColor]]; 
    } 
} 

感謝

+2

備註 - 在標準控件的專用子視圖結構中挖掘是一個糟糕的主意。您的代碼很容易在未來的iOS更新中破解。 – rmaddy

+0

它是唯一的方法我看到設置segmentcontrol個別顏色ios6 – JMD

回答

0

嘗試將其設置在-viewWillAppear我覺得觀點並不完全建立在目前還-viewDidLoad-viewDidLoad

+0

我試過這個。不工作 – JMD

5

忘記[super viewDidLoad];我想你很可能會把你的uisegmented控件放到導航欄上。當你這樣做時,UISegmentedControl會在你的視圖之前加載,所以設置色調是沒有用的。我在這裏找到一個解決方案:

self.segmentedControll.tintAdjustmentMode = UIViewTintAdjustmentModeNormal; 

的文件說:

當此屬性的值發生變化(通過視圖的變化值 或改變它的父的價值觀之一) - 系統 調用tintColorDidChange方法以允許視圖刷新其 呈現。

將此行添加到您的viewDidLoad方法中,這將導致segmentedcontroll重繪。