1

我有一个UIActionSheet包含 apicker和 a UIToolbar。在 UIToolBar 上有一个完成按钮。但是,当我旋转Picker组件并在它停止旋转之前,如果我点击Done按钮,那么我的UITextfield. 如果我Done在选择器停止旋转动画后点击按钮,那么我将获得所选组件的值

有没有办法在停止动画之前获得项目的价值..?

解决

- (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

您必须查看屏幕上的视图及其与中心的偏移量。除此之外,您可以实现自己的滚动视图并拥有一个 uipicker 覆盖,但这涉及大量工作。

或者!您可以告诉您的用户以正确的方式使用 uipicker,哈哈。

阻止用户按下保存的另一种方法是检测 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 回答