2012-11-08 34 views
1

我有一個UIActionSheet包含pickerUIToolbar。在UIToolBar上有一個完成按鈕。但是,當我旋轉Picker組件並且在它停止旋轉之前,如果我點擊Done按鈕,那麼我的UITextfiled中沒有任何值。如果在選取器停止旋轉動畫後點擊Done按鈕,那麼我將得到所選組件的值獲得空值如果我解僱UIPickerview的操作單與完成按鈕,同時選擇器spining

有什麼方法可以在停止動畫之前獲取項目的值...?

感謝

求解

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


} 

回答

2

我不認爲你可以交配。當微調器停止時,UIPicker只會調用didselectrow,否則它會卡在先前選擇的行上。你的情況中的第一個。

最接近你可以使用你的uipicker功能此委託方法:

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

你不得不看到的是在屏幕上查看其偏離中心。除此之外,你可以實現你自己的滾動視圖,並有一個uipicker覆蓋,但這涉及到很多工作。

或!你可以告訴你的用戶以正確的方式使用uipicker。

阻止用戶按下保存的另一種方法是檢測uipicker是否在旋轉。我發現this to help你。

+0

我發現用類型的東西在iPhone應用程序中的一個,這就是爲什麼我試圖做到這一點... :( –

+0

我能解決與上述代表 –

0

號 當機械臂停止你將只能得到價值。 只有在你將會得到調用代理的時候。

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