2014-01-05 56 views
0

我想在定製文本後填充我的選擇器視圖。當我可以用數組填充它時,我無法改變它的文本顏色。我到處搜索,發現兩者都是分開的,或者它們已經改變了文本顏色或者用數組填充了它。以下是我嘗試過的代碼。如何在改變文字顏色後用數組填充UIpickerView?

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return [self.CityList count]; 
} 

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 
{ 
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 44)]; 
    label.textColor = [UIColor whiteColor]; 
    label.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:18]; 
    label.textAlignment = NSTextAlignmentCenter; 
    if (row == 0) 
    { 
     label.text = self.CityList[0]; 
    } 
    else if (row == 1) 
    { 
     label.text = self.CityList[1]; 
    } 
    else if (row == 2) 
    { 
     label.text = self.CityList[2]; 
    } 
    else if (row == 3) 
    { 
     label.text = self.CityList[3]; 
    } 
    else if (row == 4) 
    { 
     label.text = self.CityList[4]; 
    } 
    else if (row == 5) 
    { 
     label.text = self.CityList[5]; 
    } 
    return label; 
} 

這段代碼實際上工作正常,但是當我的數組中有太多的時候,以這種方式實現它肯定是沒有效率的。請給我一個有效的方法。

+0

你真正的問題是什麼? –

+2

你爲什麼寫這麼多,而不是這個 label.text = self.CityList [row]; –

+0

上面的代碼給了我一種自定義選擇器視圖的方法,但是我無法通過這樣做來填充它。我必須分配每一行......。 :( – nravichan

回答

2

改變你的方法是這樣的:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 
{ 

    UILabel *label = (UILabel *)view; 
    //Check if the current view requested is a reused one, If not then create a new one 
    if (!label) 
    { 
     label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 44)]; 
    } 

    label.textColor = [UIColor whiteColor]; 
    label.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:18]; 
    label.textAlignment = NSTextAlignmentCenter; 

    //Assign the text of the label to the NSString at the index of "row" from your data array 
    label.text = self.CityList[row]; 

    return label; 
} 
+0

這將有問題,我認爲如果有多個組件每行作爲標籤被給予的全寬然後,審查OP,它確實聲明瞭一個組件,所以我猜這是有效的 – PKCLsoft

0

我只是固定它,我發現我要去哪裏錯了不能直接使用數組分配。我已經分配我的數組屬性變弱。在我將它改爲強大後,它工作得很好......;)

+1

corse你需要將你的數組設置爲Strong而不是弱:) 並確保你編寫方法pickerView:viewForRow: forComponent:reusingView:正確,因爲我寫信給你。 –