1

ここのどこかに解決策があると確信していますが、私は長い間それを探してきましたが、何も見つかりませんでした

だから私のセットアップ:.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]; 

}

私の質問:ピッカービューの使用方法を示すコード/ガイドを検索しています。つまり、次のようになります。1.ユーザーがテキストフィールドにValueOneと入力します。2.ユーザーはValueTwoである4つのオプションの1つを選択します(.m-> float cのvalueTwo.textは、設定したい4つの変数の1つに入力する必要があります)。では、変数が事前設定されたピッカービューを取得するにはどうすればよいですか?ユーザーはそれを選択するだけです。

不明な点がございましたら、お気軽にコメントしてください。

編集:キーボードを非表示にし、代わりにピッカービューを表示したいのですが、ピッカービューはテキストフィールドvalueTwoがクリックされたときにのみ表示されます。

4

3 に答える 3

2

間違いなく上記の2つの答えの組み合わせ。

まず、UITextFieldDelegateおよびUIPickerViewDelegateプロトコルに準拠するようにクラスを設定します。

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

次に、アイテムの配列とピッカービューのプロパティを宣言します。
次に、コード(またはNib)でピッカービューを作成できます。いずれの場合も、ピッカーのプロパティdelegatedatasourceプロパティをViewControllerに設定してください。

delegate変更するテキストフィールドのプロパティを設定してから、次のselfメソッドを実装します。

- (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];
}

最後に、これらのプロトコルに必要なメソッドを実装する必要があります。

- (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にエピソードを投稿しました。これには、背後のビューの調光、画面のオンとオフのアニメーション、および[完了]と[キャンセル]ボタンのツールバーの追加を含むカスタムピッカービューコンポーネントの作成方法が含まれます。 これはあなたがやろうとしていることに直接関係しているので、ここでのみ言及します。

お役に立てれば!

于 2012-07-22T14:35:16.227 に答える
0

UITextFieldDelegate呼び出し「textFieldShouldBeginEditing:」を使用し、ピッカーを使用するものに対してNOを返します。そのメッセージを受け取り、NOを送信する準備ができたら、ピッカーをアニメーション化して表示します。ユーザーが値を選択したら、問題のtextFieldにその値を設定し、ピッカーを閉じます。

于 2012-07-22T14:21:34.187 に答える
0

非常に簡単です。pickerviewにロードするすべての要素を含むivar配列が必要です。ユーザーからの新しい入力を受け取ったら、配列を更新します。ユーザーが次の方法でピッカービューを起動すると、配列が自動的に読み込まれます。

- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component      
 {
return [array objectAtIndex:row];
 }

これは、新しい配列に基づいて行数を更新します。

 - (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component 
{

 return [array count];
 }

お役に立てば幸いです。

于 2012-07-22T14:20:32.293 に答える