2015-10-28 105 views
1

我想要實現的是:我有5個不同的UITextfields。我希望用戶能夠使用UIPickerviews填寫這些字段。另外,我希望每個pickerviews都有一個不同的範圍和/或類型的值,可以從每個文本字段中進行選擇。我怎樣纔能有uipickerviews多個數據數組?

我已經嘗試過使用switch語句爲每個文本字段使用不同數組的多個pickerviews。不過,我認爲這不是實現這一目標的最有效方式。有人可以對採用不同的pickerviews數據陣列的最佳實踐有所瞭解嗎?

回答

2

你可以實現你在做什麼,只用一個PickerView的幫助,下面的代碼

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

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

     case LANGUAGE: 
      return [languageArray count]; 
      break; 
     case GENDER: 
      return [genderArray count]; 
      break; 
     case COUNTRY: 
      return [countryArray count]; 
      break; 
     case CITY: 
      return [cityArray count]; 
      break; 

     default: 
      return 0; 
      break; 
    } 

    return 0; 
} 
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    switch (pickerSelected) { 

     case LANGUAGE: 
      return [languageArray objectAtIndex:row]; 
      break; 
     case GENDER: 
      return [genderArray objectAtIndex:row]; 
      break; 

     case COUNTRY: 
      return [[countryArray objectAtIndex:row] countryName]; 
      break; 

     case CITY: 
      return [cityArray objectAtIndex:row]; 

     default: 
      return @""; 
      break; 
    } 

    return nil; 
} 
  • languageArraygenderArraycountryArray代表你 不同陣列

  • pickerSelected能是一個enumint值,您可以根據不同的UITextField設置值。 每一個的UITextField都有獨特的價值PickerView

2

以一個陣列可變或不可變按需要和文本框在.m文件聲明。

使用文本字段的委託方法:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
    { 
     currentText=textField; 
    if (textField==yourTextfield) 
    { 
     arrCurrent=YourCurrentArray; 
     [yourTextfield setInputView:pickerObj]; 
     [pickerObj setBackgroundColor:[UIColor whiteColor]]; 
     [yourTextfield setInputAccessoryView:toolObj]; 
     [self pickerView:pickerObj didSelectRow:[pickerObj selectedRowInComponent:0] inComponent:0]; 

    } 
    else if (textField==yourTextfield2) 
    { 
     arrCurrent=YourCurrentArray2; 
     [yourTextfield2 setInputView:pickerObj]; 
     [pickerObj setBackgroundColor:[UIColor whiteColor]]; 
     [yourTextfield2 setInputAccessoryView:toolObj]; 
     [self pickerView:pickerObj didSelectRow:[pickerObj selectedRowInComponent:0] inComponent:0]; 

    } 
    } 

在pickerView代表:

-(void)pickerView:(UIPickerView *)pickerView didSelectRow: 
(NSInteger)row inComponent:(NSInteger)component 
{ 

     [currentText setText:[arrCurrent objectAtIndex:row]]; 

} 

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

} 

希望能對您有所幫助.. :)

+0

如果什麼對象的類型在每個不同數組和標題不能從單個屬性中檢索? –

+0

@PiyushSharma它只是在textField上工作,因爲只有textfield提供添加inputview ....和作業寫道,他正在使用5 textfield這是我建議他。我剛剛給了tftitle gor的例子。 – Meera

+0

他還寫了'我也希望每個pickerviews都有不同的範圍和/或不同類型的值供每個文本字段選擇。這意味着數組的類型將不同,每個textField –