標準のポップアップピッカーを実装する方法を見つけるのに多くの問題があります。多くのアプリの登録画面と同様に、ユーザーが誕生日テキストフィールドを選択すると、ユーザーが誕生日を選択し、完了をクリックすると、書式設定された日付がテキストフィールドに追加されるように、ポップアップピッカーが表示されます。これはそれほど難しいことではないように思えますが、iOS 7でこれを行う簡単で明確な標準的な方法はないようです。
インターネットを検索して、モーダルを使用するように言っている人、アクションシートと言っている人、ポップアップと言っている人、さらに別のビューコントローラと言っている人を見ました。
これを行うための標準的な方法は何か、それを実装する方法のスニペットを教えてもらえますか?
「標準」の方法は、ピッカーをテキストフィールドのinputViewとして設定することだと思います。
UIPickerView *picker = [[UIPickerView alloc] init];
self.textField.inputView = picker;
テキストフィールドをタッチしたときにキーボードが行うように、下部の前面にポップアップします。
入力ビューとしてピッカーを使用する方法の簡単な実装を次に示します。
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *tf;
@property (strong,nonatomic) NSArray *theData;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIPickerView *picker = [[UIPickerView alloc] init];
picker.dataSource = self;
picker.delegate = self;
self.tf.inputView = picker;
self.theData = @[@"one",@"two",@"three",@"four"];
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return self.theData.count;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return self.theData[row];
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
self.tf.text = self.theData[row];
[self.tf resignFirstResponder];
}
ActionSheetPicker-3.0 library はこれをかなりうまくやっているようです。