Iphone 使用UIPickerView而不是UITextView
我确信这里的某个地方有解决方案,但我已经搜索了很长时间,但没有找到任何东西 因此,我的设置: h m 我的问题:我正在搜索代码/指南,告诉我如何使用pickerview,我的意思是: 1.用户在文本字段中输入ValueOne。 2.用户选择4个选项中的一个,即ValueTwo(在.m->float c ValueTwo中,应该为我要设置的4个变量中的一个填充文本)。 那么,我如何获得带有预设变量的pickerview,而用户只需选择它 如果有什么不清楚的地方,请随意评论Iphone 使用UIPickerView而不是UITextView,iphone,objective-c,ios,cocoa-touch,Iphone,Objective C,Ios,Cocoa Touch,我确信这里的某个地方有解决方案,但我已经搜索了很长时间,但没有找到任何东西 因此,我的设置: h m 我的问题:我正在搜索代码/指南,告诉我如何使用pickerview,我的意思是: 1.用户在文本字段中输入ValueOne。 2.用户选择4个选项中的一个,即ValueTwo(在.m->float c ValueTwo中,应该为我要设置的4个变量中的一个填充文本)。 那么,我如何获得带有预设变量的pickerview,而用户只需选择它 如果有什么不清楚的地方,请随意评论 编辑:我希望键盘隐藏,而
编辑:我希望键盘隐藏,而pickerview显示,pickerview应该只在单击textfield valueTwo时显示。这很简单-您应该有一个ivar数组,其中包含将加载到pickerview的所有元素。一旦用户有了新的输入,就可以更新数组。当用户通过以下方法启动选择器视图时,将自动加载阵列:
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [array objectAtIndex:row];
}
此操作将根据新数组更新行数:
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component
{
return [array count];
}
希望能有所帮助。您将使用UITextFieldDelegate调用“textFieldShouldBeginEditing:”并对要使用选择器的调用返回否。当您收到该消息并准备发送“否”时,您将在视图中设置选择器的动画。当用户选择一个值时,您将在有问题的文本字段上设置该值,并取消选取程序。肯定是上述两个答案的组合 首先,将类设置为符合
UITextFieldDelegate
和UIPickerViewDelegate
协议:
@interface MyViewController : UIViewController <UITextFieldDelegate,
UIPickerViewDelegate, UIPickerViewDataSource>
...
@end
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return self.items.count; //where items is your array of items
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row inComponent:(NSInteger)component {
return [self.items objectAtIndex:row];
}
给@DavidH的帽尖
您可以这样定义选择器方法:
- (void)presentPicker {
UIPickerView *picker = [[UIPickerView alloc] initWithFrame:SOME_FRAME_HERE];
picker.delegate = self;
picker.dataSource = self;
// TODO: animate this on screen
[self.view addSubview picker];
}
最后,您必须在这些协议中实现必要的方法:
@interface MyViewController : UIViewController <UITextFieldDelegate,
UIPickerViewDelegate, UIPickerViewDataSource>
...
@end
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return self.items.count; //where items is your array of items
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row inComponent:(NSInteger)component {
return [self.items objectAtIndex:row];
}
查看UIPickerViewDelegate
协议的方法,了解您如何响应用户选择并关闭选择器
作为一个无耻的自我推销,我最近在上发布了一个插曲,其中包括调暗它后面的视图,在屏幕上和屏幕下设置动画,以及添加一个用于“完成”和“取消”按钮的工具栏。我之所以在这里提到这一点,是因为它直接关系到你想做什么
希望这有帮助 这不是一个地方的几行代码。您需要学习如何使用UITextField委托。您需要学习如何设置拾取器进入视图、离开视图的动画,以及如何使用其代理。如果你想开发iOS软件,这些就是你需要做的事情。其他人都是这么做的。
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return self.items.count; //where items is your array of items
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row inComponent:(NSInteger)component {
return [self.items objectAtIndex:row];
}