2 つの異なるテキスト フィールドに単一の UIPickerview を使用する方法を探しています。各テキストフィールドが選択されたときにピッカービューをポップアップさせたいです。ユーザーがアイテムを選択すると、そのアイテムが特定のテキスト フィールドに入力されます。ピッカーは、選択したテキストフィールドに基づいて入力する必要があります。
私はこれを読みました:
How to use one UIPickerView for multiple textfields in one view?
そしてこれ:
UIPickerViewを使用して1つのビューに異なるテキストフィールドを設定する方法は?
そしてこれ:
テキストフィールド編集に関するUIPickerViewの複数のソース
ただし、完全な解決策はありません。
私は Xcode を初めて使用するので、ストーリーボードを設定する手順も含むソリューションが必要です。
これを何週間も調査してきたので、助けていただければ幸いです。
編集:ここに私のコードがあります:
.h:
#import <UIKit/UIKit.h>
@interface klViewController : UIViewController <UIPickerViewDelegate, UIPickerViewDataSource> {
IBOutlet UITextField *textField1;
IBOutlet UITextField *textField2;
NSMutableArray *pickerArray1;
NSMutableArray *pickerArray2;
UIPickerView *pickerView;
}
@property(nonatomic,retain) IBOutlet UITextField *textField1;
@property(nonatomic,retain) IBOutlet UITextField *textField2;
@property(nonatomic,retain) IBOutlet UIPickerView *pickerView;
@end
.m:
#import "klViewController.h"
@interface klViewController ()
@end
@implementation klViewController
@synthesize pickerView;
@synthesize textField1;
@synthesize textField2;
int variabla;
-(void)textFieldDidBeginEditing:(UITextField *)textField{
[pickerView setHidden:YES];
if (textField1.editing == YES) {
[textField1 resignFirstResponder];
[pickerView setHidden:NO];
variabla = 1;
}else if (textField2.editing == YES) {
[textField2 resignFirstResponder];
[pickerView setHidden:NO];
variabla = 2;
}
NSLog(@"variabla %d",variabla);
[pickerView reloadAllComponents];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
{
if (variabla == 1) {
return [pickerArray1 count];
}else if (variabla == 2) {
return [pickerArray2 count];
}else {
return 0;
}
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
{
if (variabla == 1) {
return [pickerArray1 objectAtIndex:row];
}else if (variabla == 2) {
return [pickerArray2 objectAtIndex:row];
}else {
return 0;
}
}
- (void)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
}
- (void)viewDidLoad {
[super viewDidLoad];
[pickerView setHidden:YES];
pickerArray1 = [[NSMutableArray alloc] initWithObjects:@"0", @"1", @"2", nil];
pickerArray2 = [[NSMutableArray alloc] initWithObjects:@"3", @"4", @"5", nil];
}
@end
これが私のストーリーボードのスクリーンショットです:
ステータスアップデート:
プログラムを実行すると:
1) ピッカービューが非表示になります。
2) テキストフィールドを選択すると、ピッカービューが表示され、選択したテキストフィールドに応じて正しく入力されます。
2) ピッカーの行が選択されている場合、テキストフィールドは入力されません。
これにより、より多くの洞察が得られることを願っています。