【发布时间】:2012-10-10 05:29:29
【问题描述】:
我正在寻找一种将单个 UIPickerview 用于两个不同文本字段的方法。我希望在选择每个文本字段时弹出选择器视图。用户选择他们的项目后,该项目将填充特定的文本字段。选择器必须根据所选的文本字段进行填充。
我读过这个:
How to use one UIPickerView for multiple textfields in one view?
还有这个:
How to use UIPickerView to populate different textfields in one view?
还有这个:
Multiple sources for UIPickerView on textfield editing
但是,没有一个给出完整的解决方案。
我是 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) 当我选择一个文本字段时,选择器视图会根据所选的文本字段出现并正确填充。
问题:
1) 在文本域外单击时,选择器不会消失。
2)选择选择器中的行时不会填充文本字段。
希望这能提供更多见解。
【问题讨论】:
-
你真的想达到什么目的??
-
我希望从预定义的列表(即运动和类别)中填充两个选择器视图。当用户单击文本字段时,将弹出一个带有列表的 uipicker 视图(即运动)。选择一项运动后,pickerview 将消失,文本字段将显示该运动。类别也是如此。这有帮助吗?
-
所以在这种情况下你会有 2 个文本字段......但你想使用一个仅选择器视图的仪式??
-
所以我想知道:1)如何通过情节提要将文本字段链接到选取器视图以及将文本字段/选取器视图链接到代表等,2)在选择文本字段时显示选取器视图 3)填充选取器视图来自预定义的数组和 4) 从选取器视图中的选择中填充文本字段
-
回答您之前的问题,是的:两个文本字段,一个选择器视图。
标签: iphone objective-c xcode uipickerview