2012-07-22 58 views
1

我敢肯定,这里是什么地方的解决方案,但我搜索过,很长一段时间了,但没发现什么使用一个UIPickerView,而不是UITextView的

所以我的设置: .H

IBOutlet UITextField *valueOne; 
IBOutlet UITextField *valueTwo; 
    IBOutlet UILabel *total; 


- (IBAction)Lange; 
@property (nonatomic, retain) UITextField *valueOne; 
@property (nonatomic, retain) UITextField *valueTwo; 

.M

- (IBAction)Lange{ 
    float f = arc4random_uniform(3) ; 
    float x = ([valueOne.text floatValue]-1.5)/1.5; 
    float c = (5+[valueTwo.text floatValue])/2; 
    float o = (x+c)/2+f; 

    total.text = [[NSString alloc]initWithFormat:@"%.fcm", o]; 

} 

我的问题:我在寻找我展示了如何使用pickerview代码/指导,我的意思是: 1.用户在文本框输入ValueOne。 2.用户选择ValueTwo的4个选项之一(在.m-> float c值中,应该为我想要设置的4个变量之一填充两个文本)。 那么我怎样才能得到与预先设置的变量pickerview和用户只需要选择它?

如果有什么不清楚的话可随时发表评论。

编辑:我希望键盘隐藏和pickerview来显示,而pickerview应该只显示时,单击文本字段valueTwo。

回答

2

当然上面的两个答案的组合。

首先,设置你的类符合UITextFieldDelegateUIPickerViewDelegate协议:

@interface MyViewController : UIViewController <UITextFieldDelegate, 
    UIPickerViewDelegate, UIPickerViewDataSource> 
... 
@end 

接下来,声明属性的物品的排列,和选择器视图。
然后,您可以在代码中(或在笔尖中)创建选取器视图。无论哪种情况,请确保将选取器的delegatedatasource属性设置为您的视图控制器。

设置要修改到self,然后实现此方法的文本字段的delegate属性:

- (void)textFieldShouldBeginEditing:(UITextField *)textfield { 
    [self presentPicker]; 
    return NO; 
} 

帽尖到@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]; 
} 

最后,你必须实现必要的方法在th OSE协议:

- (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协议的方法,看看你会如何选择用户响应并关闭选择器。

作为一个无耻的自我推销,我最近张贴在NSScreencast情节上how to build a custom picker view component是包括调出它背后的视图,其动画上&关闭屏幕,并添加工具栏完成&取消按钮。我只在这里提到这一点,因为它与你正在做的事情直接相关。

希望这会有所帮助!

0

这很简单 - 你应该有一个伊娃阵列,其中包含你将加载到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]; 
} 

希望有所帮助。

0

您将使用UITextFieldDelegate叫“textFieldShouldBeginEditing:”和你想要使用一个选择器的一个返回NO。当您收到该消息并准备发送NO时,您将使您的选取器进入视图。当用户选择一个值时,您将在相关的textField上设置该值,并关闭该选取器。

+0

我还没开发好,代码会是什么? – Mershual 2012-07-22 14:23:46

+0

它在一个地方不是几行代码。您需要了解如何使用UITextField委托。您需要了解如何将选取器动态显示到视图中,以及如何使用其委托。如果你想开发iOS软件,这些就是你需要做的事情。这就是其他人所做的。 – 2012-07-22 14:35:23