Добавление UIPicker в текстовое поле - PullRequest
0 голосов
/ 30 января 2012

У меня есть табличное представление, и я должен отображать текстовые поля в некоторых ячейках. Когда пользователь щелкает текстовое поле, я хочу, чтобы представление средства выбора отображалось с целочисленными значениями от 0 до 99. Как только пользователь выбирает элемент в представлении средства выбора, то же самое должно отображаться в этом конкретном текстовом поле. Любая помощь будет с благодарностью.

Ответы [ 4 ]

1 голос
/ 29 ноября 2014

Swift iOS: (Примечание: пожалуйста, измените имя переменной по требованию)

Шаг 1: объявите переменные и объекты

var objPickerView  : UIPickerView = UIPickerView()

// select the picker view data values
objPickerView.delegate=self;
objPickerView.dataSource=self;
objPickerView.showsSelectionIndicator=true;

// show picker view when text field clicked   
self.smokingStatusText!.inputView = objPickerView


// reload the component of picker
self.objPickerView.reloadAllComponents()

// select the value of picker status(Which row must be selected)
self.objPickerView.selectRow(sStatus!, inComponent: PickerComponent.size.rawValue, animated: false)

Шаг 2: объявите делегатов и протокол:

// programming mark ----- ---- ----- ----- ---- ----- ----- ---- -----

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}

// programming mark ----- ---- ----- ----- ---- ----- ----- ---- -----

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return pickerData.count
}

//MARK: UIPickerView Delegates

// programming mark ----- ---- ----- ----- ---- ----- ----- ---- -----

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    smokingStatusText!.text = pickerData[row]
    self.smokerStatusNum = String(row)

}

// programming mark ----- ---- ----- ----- ---- ----- ----- ---- -----

func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {

    let titleData = pickerData[row]

    let font:UIFont? = UIFont(name: "Georgia", size: 14.0)

    let attrString = NSAttributedString(
        string: titleData,
        attributes: NSDictionary(
            object: font!,
            forKey: NSFontAttributeName))

    return attrString
}

// programming mark ----- ---- ----- ----- ---- ----- ----- ---- -----

//size the components of the UIPickerView
func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
    return 36.0
}

func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
    return 300
}
1 голос
/ 30 января 2012
   -(void) viewDidLoad
 {
arrayNo = [[NSMutableArray alloc] init];
[arrayNo addObject:@"1"];
[arrayNo addObject:@"2"];
[arrayNo addObject:@"3"];
// and so on....
  }

Добавить цель этой строки в функцию текстового поля ur

  UITextfield *entered2;
  //..... some codes
   [entered2 addTarget:self action:@selector(showPicker)forControlEvents:UIControlEventEditingDidBegin];
[myview addSubview:entered2];




  -(void) showPicker
  {
[entered2 resignFirstResponder];
    pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0,240,220,0)];

pickerView.delegate = self;
pickerView.dataSource = self;
pickerView.showsSelectionIndicator = YES;    

[self.view addSubview:pickerView];  
[pickerView release]; 
 }

 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
   {
    return [arrayNo count];
   }
  - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
 return 1;  
   }
   - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
   {
entered2.text=[arrayNo objectAtIndex:row];
[pickerView removeFromSuperview];
   }
    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
   {
return [arrayNo objectAtIndex:row];
[pickerView removeFromSuperview];
   }
   - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
int sectionWidth = 300;
return sectionWidth;
     }
0 голосов
/ 03 апреля 2012

Сначала в методе viewDidLoad необходимо создать экземпляр PickerView и добавить его в textField

UIPickerView *pickerView =[[UIPickerView alloc]init];
pickerView.delegate=self;
pickerView.dataSource=self;
pickerView.showsSelectionIndicator=YES;
myTextField.inputView=pickerView;

Затем необходимо реализовать делегат UIPickerView

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

    myTextField.text=[arrayWithData objectAtIndex:row];
 }

Где arrayWithData - этомассив с источником для PickerView.

0 голосов
/ 30 января 2012

Создайте представление выбора и реализуйте методы делегата и источника данных в вашем контроллере представления. Установите вид выбора как inputview вашего текстового поля. Затем вместо клавиатуры появится всплывающее окно, когда пользователь редактирует текстовое поле.

Используйте методы делегата didSelect... для обновления значения текстового поля, когда пользователь изменяет средство выбора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...