2012-11-27 164 views
0
int variabla; 

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { 

return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 


if (variabla == 1) 
    return list4.count; 

else if(variabla == 2) 
    return list3.count; 

if (variabla == 3) 
    return list1.count; 

if (variabla == 4) 
    return list2.count; 

return YES; 

[pickerView reloadAllComponents]; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 
if (variabla == 1) { 
    subjectField.text = [list4 objectAtIndex:row]; 
} 
else if (variabla == 2) { 
    gradeField.text = [list3 objectAtIndex:row]; 
} 
else if (variabla == 3) { 
    mathField.text = [list1 objectAtIndex:[pickerView selectedRowInComponent:0]]; 
    selectedRow = [pickerView selectedRowInComponent:0]; 
    coreTView.text = [mathMeaning objectAtIndex:selectedRow]; 
} 
if (variabla == 4) { 
    elaField.text = [list2 objectAtIndex:[pickerView selectedRowInComponent:0]]; 
    selectedRow = [pickerView selectedRowInComponent:0]; 
    coreTView.text = [elaMeaning objectAtIndex:selectedRow]; 
} 


[pickerView reloadAllComponents]; 
NSLog(@"row selected is %d", selectedRow); 

} 

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

if (variabla == 1) 
    return [list4 objectAtIndex:row]; 


if (variabla == 2) 
    return [list3 objectAtIndex:row]; 

if (variabla == 3) 
    return [list1 objectAtIndex:row]; 

if (variabla == 4) 
    return [list2 objectAtIndex:row]; 

return NO; 

[pickerView reloadAllComponents]; 
} 

我想知道,或者對如何,如果他們在先前的文本框類型的負載基於用戶輸入從以前的UITextField所以UIPickerView中指出正確的方向蘋果,我想要紅色,綠色,藍色來顯示UIPickerView或者如果他們輸入橙色,我想看橙色,黃色。UIPickerview過濾列表

回答

0

聽起來像使用多維數組的好時機:

NSArray *titles = [[NSArray alloc] initWithObjects: 
[[NSArray alloc] initWithObjects:@"Red",@"Green",@"Blue",nil], 
[[NSArray alloc] initWithObjects:@"Orange",@"Yellow",@"Grape",nil], 
nil]; 

現在,所有你需要的是一個int(看起來像你使用variabla)表示例如輸入 - ,如果用戶輸入「Apple」,那麼你將variabla設置爲0;如果他們輸入「橙色」,則將variabla設置爲1;等等。

然後,您可以相應地設置了相關的功能:

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    return [[titles objectAtIndex:variabla] count]; 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 
    return [[titles objectAtIndex:variabla] objectAtIndex:row]; 
} 

,只要你想通過簡單地增加另一個NSArraytitles您可以添加儘可能多的單詞的支持。

0

就拿BOOL變量檢查哪個按鈕用戶點擊,蘋果或橘子......

這裏取像

BOOL isApple; 

變量時,蘋果按鈕使用點擊當時在加載pickerview方法設置TRU像波紋管這個變量..

-(IBAction)btnApple_Clicked(id)sender{ 
    isApple =TRUE; 
    [pickerView reloadAllComponents]; 
} 

-(IBAction)btnOrange_Clicked(id)sender{ 
    isApple =FALSE; 
    [pickerView reloadAllComponents]; 
} 

,然後在該委託方法只是用這樣的...

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    if(isApple){ 
     return [appleArray count]; 
    } 
    else{ 
     return [orangeArray count]; 
    } 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 
    if (isApple) { 
     return [appleArray objectAtIndex:row]; 
    } 
    else{ 
     return [appleArray objectAtIndex:row]; 
    } 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 
    if (isApple) { 
     yourTextField.text = [appleArray objectAtIndex:row]; 
    } 
    else{ 
     yourTextField.text = [appleArray objectAtIndex:row]; 
    } 
}