2011-09-12 9 views
4

私はUIPickerViewのデフォルト値を設定しようとしています。しかし、どの値を設定しても、常にデフォルト値は1になります。以下のメソッドはピッカーをうまく読み込み、選択することができます。だから、私は何が間違っているの?ここにコードがあります。UIPicker selectRowが機能しない - このコードで何が問題になっていますか?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 

    arrayNo = [[NSMutableArray alloc] init]; 
    [arrayNo addObject:@" 1 "]; 
    [arrayNo addObject:@" 2 "]; 
    [arrayNo addObject:@" 3 "]; 
    [arrayNo addObject:@" 4 "]; 
    [arrayNo addObject:@" 5 "]; 

    [pickerView selectRow:4 inComponent:0 animated:YES]; 
    mlabel.text= [arrayNo objectAtIndex:[pickerView selectedRowInComponent:0]];  

} 

ピッカーのDataSourceメソッド:

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

    mlabel.text = [arrayNo objectAtIndex:row]; 
    NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 

    [f setNumberStyle:NSNumberFormatterDecimalStyle]; 

    NSNumber * myNumber = [f numberFromString:[arrayNo objectAtIndex:row]]; 

    [f release]; 

    prefs = [NSUserDefaults standardUserDefaults]; 

    NSInteger myInteger = [myNumber integerValue]; 


    // save level 
    [prefs setInteger:myInteger forKey:@"myInt"]; 

    // saving it all 
    [prefs synchronize]; 


} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component; 
{ 
    return [arrayNo count]; 
} 

答えて

6

を呼び出す前に[pickerView reloadAllComponents]になります。

-(void) viewWillAppear: (BOOL) animated 
0
  • 私たちは、あなたが(このビューがオンになっていないのviewDidLoadでアニメーションselectRowを行うどのようにセットアップピッカー
  • のデータソースを見ることができませんまだ画面...)

アニメーションで試しましたか?いいえ?

+0

これらすべてを試してみましょう - 上記の方法。 –

5

アレイにデータを入力した後、行を選択する前にreloadAllComponentsに電話する必要があります。ピッカーはあなたの新しい要素の数をまだ知っていないかもしれません。

0

arrayNoは何をしますか?それはUIPickerViewを生成するために使用されていますか?もしそうなら、あなたは私はこの方法でそれを置けばそれが動作selectRow:inComponent:animated:

+2

それを試しましたが、うまくいかなかった。 –

2

次の操作を行い手順初期化ピッカー前

  • 負荷配列を..
  • call [pickerView selectRow:4 inComponent:0 animated:YES];
  • [pickerView reloadAllComponents]を呼び出します。

りんごは、「iOS 5.0では、UIPickerViewはpickerView:didSelectRow:inComponentを送信しません:プログラマチックな選択のためにメッセージを委譲しました。だから我々は強制的にrelaodAppComponentsを呼び出す必要があります..あなたがそうでなければ、あなたがストーリーボードからそれを設定した場合のviewDidLoadでデータソースを設定する必要があるため、その作業が...

1

これがあれば

与えるアクノリッジ、それがロードされますviewWillAppearの後に。

関連する問題