2010-11-19 30 views
4

我在我的視圖中有3個選擇器,其中一個只包含圖像,所以對於這個我必須使用viewForRow,但對於其他2個常見採樣器和標籤,我需要titleForRow,除非如果我使用viewForRow,titleForRow永遠不會被召喚。如何在同一個類中爲不同的拾取器使用viewForRow和titleForRow?

我該如何讓兩位代表在我的班級中打電話?

這是我有:

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

    [[[objectPicker subviews] objectAtIndex:0] setHidden:YES]; 
    [[[objectPicker subviews] objectAtIndex:5] setHidden:YES]; 
    [[[objectPicker subviews] objectAtIndex:8] setHidden:YES]; 

    return ; //will be implemented, but this will return the icons 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ 

    [[[objectPicker subviews] objectAtIndex:0] setHidden:YES]; 
    [[[objectPicker subviews] objectAtIndex:5] setHidden:YES]; 
    [[[objectPicker subviews] objectAtIndex:8] setHidden:YES]; 

    if (pickerView == self.timePicker) { 
     return [timeList objectAtIndex:row]; 
    } 
     else if(pickerView == self.powerPicker) { 
     return [powerList objectAtIndex:row]; 
    } 
} 

回答

2

爲每個拾取器創建不同的類,每個拾取器都包含自己的代表。然後簡單地將它們導入到我的mainController類中,並在viewDidLoad方法中初始化它們。

這裏是我usedL

===========================溶液實測值的溶液(解決方法):== =========================

首先,我爲我的3個拾取器創建了3個不同的類,每個類都有一個不同的.xib。新增這3個採摘到我的主控制器類:

//不要忘記#進口「YourClass.h」和實例它在你的主控制器

objPickerVC = [[ObjectPickerViewController alloc] initWithNibName:@"ObjectPickerViewController" bundle:[NSBundle mainBundle]]; 
powerPickerVC = [[PowerPickerViewController alloc] initWithNibName:@"PowerPickerViewController" bundle:[NSBundle mainBundle]]; 
timePickerVC = [[TimePickerViewController alloc] initWithNibName:@"TimePickerViewController" bundle:[NSBundle mainBundle]]; 

CGRect rect1 = CGRectMake(5, 43, 100, 216); 
objPickerVC.view.frame = rect1; 
[self.view addSubview:objPickerVC.view]; 

CGRect rect2 = CGRectMake(110, 43, 100, 216); 
powerPickerVC.view.frame = rect2; 
[self.view addSubview:powerPickerVC.view]; 

CGRect rect3 = CGRectMake(215, 43, 100, 216); 
timePickerVC.view.frame = rect3; 
[self.view addSubview:timePickerVC.view]; 

的.h文件通過這樣做,我有每個pickerView的單獨代表,允許我設置它們,但是我需要它們。

P.S:重要的是,對於定位問題,在您的pickerViews xib中,您將它們集中在視圖上。如果你不這樣做,當你試圖定位它們時 - 例如CGRectMake(215,43 ...)將不在REAL(215,43 ...)的位置上。我知道,它沒有任何意義,但這是一個可怕的錯誤,並且使您必須將其置於試用階段。改變價值 - 運行 - 改變 - 運行,直到你做對了。

3

你根本不能同時在相同的委託有。解決方案只實現viewForRow:併爲文本列返回一個UILabel對象。將label.text設置爲您要返回的字符串textForRow:

+0

我知道,但我不想這樣做的原因是因爲當你返回一個標籤時,你在選擇器內選擇標籤時有藍色矩形。但是,我在不同的班級創建了採購員,讓他們有自己的代表。只需將它們導入主控制器。 :) – 2010-11-24 11:44:35

相關問題