web-dev-qa-db-ja.com

UITextFieldのinputViewとしてのUIPickerView

私はUIPickerViewinputViewUITextFieldとして使用する方法について多くのことを読みました。問題は、UIPickerViewをタップするとUITextFieldを呼び出すことができるということです。ただし、私のアプリは常にUIPickerViewが表示された状態でロードされます。 viewDidLoadmyownpickerview.hidden = YES;を変更しようとしましたが、UITextFieldをクリックすると問題が発生します。表示されず、複数回クリックすると、デバッガーにエラーが表示されます。

誰かが私を正しい方向に向けることができますか? UIPickerViewをタップした後に表示されるのはUITextFieldのみです

私は今までで初めてのiOSアプリの開発に取り組んでいます。しばらくお待ちください。ありがとう=)

28
SilverHood

これを試してください、それはうまく動作し、viewdidloadに入れてください。

yourpicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 50, 100, 150)];
    [yourpicker setDataSource: self];
    [yourpicker setDelegate: self];
    yourpicker.showsSelectionIndicator = YES;
    self.yourtextfield.inputView = yourpicker;

しない[self.view addSubview: yourpicker]; この

47
Aklesh Rathaur

このように使用して、

 // Picker
UIPickerView *picker = [[UIPickerView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,150)];
picker.dataSource = self;
picker.delegate = self;

// Tool bar
UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,35)];
pickerToolbar.barStyle = UIBarStyleDefault;

// Bar button
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(pickerDoneButtonTapped:)];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[pickerToolbar setItems:@[flexSpace,doneButton]];

self.selectedLockerTextFiled.inputAccessoryView = pickerToolbar;
self.selectedLockerTextFiled.inputView = picker;

完了したボタンアクションのコードの下、

-(void)pickerDoneButtonTapped:(id)picker{
    [self.view endEditing:YES];}