2015-03-24 63 views
0

我在工具栏中创建了一个具有完成按钮的UIPickerView。我想完成以下操作:只有当点击完成按钮时才将UIPickerView选项添加到TextField

用户在UIPickerView中选择一个类别,然后点击“完成”按钮。结果应该是UIPickerView和工具栏消失,类别文本字段将根据用户的选择进行更新。我几乎拥有一切权利。当完成按钮被点击时,PickerView和工具栏消失。但是,即使在我点击按钮之前,Textfield也会更新。但是我希望文本域只在完成按钮被点击时更新。

任何人都可以指出我在正确的方向,我有我的错误?由于

这是我使用的代码:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Do any additional setup after loading the view. 

    //disable saveButton 
    [_saveButton setEnabled:NO]; 

    [self.picker removeFromSuperview]; 
    [self.pickerToolbar removeFromSuperview]; 

    //Initialize Data 
    _pickerData = @[@"Item 1", @"Item 2", @"Item 3", @"Item 4"]; 

    //Connect Data 
    self.picker.dataSource = self; 
    self.picker.delegate = self; 

    _textFieldCategory.inputView = _picker; 
    _textFieldCategory.inputAccessoryView = _pickerToolbar; 

} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

// The number of columns of data 
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 

// The number of rows of data 
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return _pickerData.count; 
} 

// The data to return for the row and component (column) that's being passed in 
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return _pickerData[row]; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    self.textFieldCategory.text = _pickerData[row]; 
} 

- (IBAction)doneButtonTapped:(id)sender 
{ 
    [self.picker removeFromSuperview]; 
    [self.pickerToolbar removeFromSuperview]; 

回答

1

尝试创建一个实例变量,例如

NSInteger selectedRow; 

pickerView:didSelectRow:inComponent:方法,代替你有

selectedRow = row; 

并在doneButtonTapped:方法中,添加行

self.textFieldCategory.text = _pickerData[selectedRow]; 
+0

谢谢克里斯。这就像一个魅力! – mjbn 2015-03-24 21:37:19

+0

@mjbn将答案标记为正确:) – Thomas 2015-03-24 21:40:12

+1

完成!对不起,系统告诉我,我必须等3分钟才能检查它! – mjbn 2015-03-24 21:44:22

相关问题