1

aとaUIActionSheetを含む があります。UIToolBar には完了ボタンがあります。ただし、コンポーネントを回転させて回転を停止する前に、ボタンをタップすると、値が取得されません。ピッカーがアニメーションの回転を停止した後にボタンをタップすると、選択したコンポーネントの値が取得されますpickerUIToolbarPickerDoneUITextfieldDone

アニメーションを停止する前にアイテムの値を取得する方法はありますか..?

解決する

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
     UILabel *lbl = (UILabel *)view;

           // Reuse the label if possible...
           if ((lbl == nil) || ([lbl class] != [UILabel class])) {
               CGRect frame = CGRectMake(0.0, 10.0, 250, 50);
               lbl = [[[UILabel alloc] initWithFrame:frame] autorelease];
           }
    if (component == 0) {

        lbl.textColor = [UIColor blackColor];
        lbl.textAlignment=UITextAlignmentLeft;
        lbl.backgroundColor = [UIColor clearColor];



        lbl.text = [arrCountry objectAtIndex:row];
        lbl.font=[UIFont boldSystemFontOfSize:14];
         NSInteger clm1 = [pickerView2 selectedRowInComponent:component];


        txtCountry.text = [arrCountry objectAtIndex:clm1];
        countryCode=[arrCountryCode objectAtIndex:clm1];
    }

    return lbl;
}

そしてまた

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{

  txtCountry.text = [arrCountry objectAtIndex:row];
  countryCode=[arrCountryCode objectAtIndex:row];
}
4

3 に答える 3

2

付き合えないと思います。UIPicker は、スピナーが停止したときにのみ didselectrow を呼び出します。それ以外の場合は、以前に選択された行にスタックします。あなたの場合の最初のもの。

uipicker を使用して機能を取得できる最も近いのは、次のデリゲート メソッドです。

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

画面上のビューと、中心からのオフセットを確認する必要があります。それ以外に、独自の scrollview を実装して uipicker オーバーレイを使用することもできますが、それには多くの作業が必要です。

また!ユーザーに適切な方法で uipicker を使用するように指示できます (笑)。

ユーザーが保存を押さないようにするもう 1 つの方法は、uipicker が回転しているかどうかを検出することです。私はあなたを助けるためにこれを見つけました。

于 2012-11-08T08:05:48.760 に答える
1

ピッカー デリゲート

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    //selectedRowInPicker is globle NSInteger
    selectedRowInPicker = row;
    yourTextField.text = [NSString stringWithFormat:@"%@",[pickerValueAry objectAtIndex:row]];
}

//完了 BtnPress

-(void)doneBtnPressToGetValue
{
    yourTextField.text = [NSString stringWithFormat:@"%@",[pickerValueAry objectAtIndex:selectedRowInPicker]];
}
于 2012-11-08T08:18:07.287 に答える
0

いいえ。ピッカーが停止しているときにのみ値を取得します。ピッカーデリゲートが呼び出されるのはその時だけです。

于 2012-11-08T07:56:36.390 に答える