iOS - 选择器

  • 选择器的使用

    选择器由一个旋转的可滚动视图组成,用于从项目列表中选择一个值。
  • 重要属性

    • delegate
    • dataSource
  • 重要方法

    
    - (void)reloadAllComponents
    - (void)reloadComponent:(NSInteger)component
    - (NSInteger)selectedRowInComponent:(NSInteger)component
    - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated
    
  • 更新 ViewController.h

    我们将为文本字段、选择器视图和数组添加实例。我们将采用UITextFieldDelegate, UIPickerViewDataSourceUIPickerViewDelegate协议。这ViewController.h 如下 -
    
    #import <UIKit/UIKit.h>
    @interface ViewController : UIViewController
       <UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate> {
       UITextField *myTextField;
       UIPickerView *myPickerView;
       NSArray *pickerArray;
    }
    @end
    
  • 添加自定义方法 addPickerView

    
    -(void)addPickerView {
       pickerArray = [[NSArray alloc]initWithObjects:@"Chess", 
       @"Cricket",@"Football",@"Tennis",@"Volleyball", nil];
       myTextField = [[UITextField alloc]initWithFrame:
       CGRectMake(10, 100, 300, 30)];
       myTextField.borderStyle = UITextBorderStyleRoundedRect;
       myTextField.textMoognment = UITextMoognmentCenter;
       myTextField.delegate = self;
       [self.view addSubview:myTextField];
       [myTextField setPlaceholder:@"Pick a Sport"];
       myPickerView = [[UIPickerView alloc]init];
       myPickerView.dataSource = self;
       myPickerView.delegate = self;
       myPickerView.showsSelectionIndicator = YES;
       UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] 
       initWithTitle:@"Done" style:UIBarButtonItemStyleDone 
       target:self action:@selector(done:)];
       UIToolbar *toolBar = [[UIToolbar alloc]initWithFrame:
       CGRectMake(0, self.view.frame.size.height-
       myDatePicker.frame.size.height-50, 320, 50)];
       [toolBar setBarStyle:UIBarStyleBlackOpaque];
       NSArray *toolbarItems = [NSArray arrayWithObjects: 
       doneButton, nil];
       [toolBar setItems:toolbarItems];
       myTextField.inputView = myPickerView;
       myTextField.inputAccessoryView = toolBar;
    }
    
    实现如下所示的代理 -
    
    #pragma mark - Text field delegates
    -(void)textFieldDidBeginEditing:(UITextField *)textField {
       if ([textField.text isEqualToString:@""]) {
          [self dateChanged:nil];
       }
    }
    #pragma mark - Picker View Data source
    -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
       return 1;
    }
    -(NSInteger)pickerView:(UIPickerView *)pickerView 
       numberOfRowsInComponent:(NSInteger)component {
       return [pickerArray count];
    }
    #pragma mark- Picker View Delegate
    -(void)pickerView:(UIPickerView *)pickerView didSelectRow:
       (NSInteger)row inComponent:(NSInteger)component {
       [myTextField setText:[pickerArray objectAtIndex:row]];
    }
    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:
       (NSInteger)row forComponent:(NSInteger)component {
       return [pickerArray objectAtIndex:row];
    }
    
    更新 viewDidLoadViewController.m 如下 -
    
    (void)viewDidLoad {
       [super viewDidLoad];
       [self addPickerView];
    }
    
  • 输出

    当我们运行应用程序时,我们将获得以下输出 -
    iOS 教程
    在选择文本字段时,选择器视图将显示如下所示,我们可以在其中选择我们的选择 -
    iOS 教程