2012-07-22 61 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