Iphone 使用UIPickerView而不是UITextView

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,而用户只需选择它 如果有什么不清楚的地方,请随意评论 编辑:我希望键盘隐藏,而

我确信这里的某个地方有解决方案,但我已经搜索了很长时间,但没有找到任何东西

因此,我的设置: 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];
}