2012-01-13 14 views
0

この時点で、ヘッダーは完全に私が管理しようとしていることを説明しています。短いので、hereの例が好きだった。問題は1つだけです。この例では、通常のUIPickerViewではなくUIDatePickerが使用されています。私の問題は、NSMutableArrayからのデータで私のUIPickerViewを入力することができないということです。私は「ドラム」を走らせるために3つの重要な方法を使って一般的な方法でそれを達成しようとしました。ボタンをタップしたときにUIPickerViewが表示される

ここでviewDidLoad:self.uiPickerViewData = [[NSMutableArray alloc] initWithObjects:@ "One"、@ "Two"、nil];

//when tapping on Set Quality button 
- (IBAction)setQuality:(id)sender 
{ 

actionSheet=[[UIActionSheet alloc]initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 
[actionSheet setActionSheetStyle:UIActionSheetStyleDefault]; 

CGRect pickerFrame=CGRectMake(0, 44, 0, 0); 
qualityPicker=[[UIPickerView alloc]initWithFrame:pickerFrame]; 
qualityPicker.delegate=self; 
[actionSheet addSubview:qualityPicker]; 

[qualityPicker release]; 

UIToolbar *toolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, actionSheet.bounds.size.width, 44)]; 
[toolBar setBarStyle:UIBarStyleDefault]; 
[toolBar sizeToFit]; 

UIBarButtonItem *spacer=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
UIBarButtonItem *setButton=[[UIBarButtonItem alloc]initWithTitle:@"Set" style:UIBarButtonSystemItemCancel target:self action:@selector(setQualityIntoDB)]; 
UIBarButtonItem *cancelButton=[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonSystemItemCancel target:self action:@selector(cancel)]; 

[toolBar setItems:[NSArray arrayWithObjects:spacer,setButton,cancelButton, nil]animated:NO]; 
[spacer release]; 
[setButton release]; 
[cancelButton release]; 

[actionSheet addSubview:toolBar]; 
[toolBar release]; 

[actionSheet showInView:self.view]; 
[actionSheet setBounds:CGRectMake(0, 0, 320, 485)]; 
} 

私が期待した結果をもたらしてくれなかった必須事項。

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 

- (NSInteger)numberOfRowsInComponent:(NSInteger)component 
{ 
    return [uiPickerViewData count]; 
} 

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

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
// Will be properly implemented later 

DBAccess *access=[[DBAccess alloc]init]; 
[access closeDataBase]; 
[access release]; 
} 

私はUIPickerViewが空になっています。問題はどこですか?

答えて

0
-(void)viewDidLoad 
{  PickerList = [[NSMutableArray alloc] init]; 
      SecondPickerList = [[NSMutableArray alloc]initWithObjects:@"0.0 cm",@"0.1 cm",@"0.2 cm",@"0.3 cm",@"0.4 cm",@"0.5 cm",@"0.6 cm",@"0.7 cm",@"0.8 cm",@"0.9 cm", nil];   

      for(int i=0;i<210;i++) 
      { 

       [PickerList addObject:[NSString stringWithFormat:@"%i cm",i]]; 
      } 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
} 

私はピッカーを作成した後、ここでこの方法およびビューの下での視認性のうちツールバー

+0

...あなたのボタンとhidePickerしたい何か他のもののためのアクションとしてのアクションとしてshowPickerを追加し、ViewCoまで、全体の方法長いメモリにこの配列を保ちますコントローラが解放されますか? – NCFUSN

+0

はい。それは配列の大きさに依存します。PickerControllerが配置されているView Controllerに入力するときに割り当てることができます。私の英語で申し訳ありません.. –

+0

、それが動作していない場合は、すべてのコンポーネントを更新しようとします... [Picker reloadAllComponents]; –

1

使用...あなたはdidloadまたはアプリケーションの委任にあなたのMutablearrayをALLOCなければならないことを意味する(座標=(0640 )):

- (void)showPicker{ 

[UIView beginAnimations:@"picker" context:nil]; 
[UIView setAnimationDuration:0.5]; 

    picker.transform = CGAffineTransformMakeTranslation(0,- pickerHeight); 
    pickerToolbar.transform = CGAffineTransformMakeTranslation(0, - pickerHeight - toolbarHeight); 

[UIView commitAnimations]; } 

-(void)hidePicker{ 
[UIView beginAnimations:@"picker" context:nil]; 
[UIView setAnimationDuration:0.5]; 

picker.transform = CGAffineTransformIdentity; 
pickerToolbar.transform = CGAffineTransformIdentity; 

[UIView commitAnimations]; } 

その後、

+0

私のUIPickerViewにデータが挿入されるのか、それともうまくオープン/クローズ操作だけがアニメーション化されますか? – NCFUSN

+0

彼らはクローズドオペレーションです。申し訳ありませんが、私はその質問がタイトルだと思っていました。未使用ピッカーの唯一の理由は、uiPickerViewDataが空であるか、または割り当てが解除されていることです。クラスインタフェースでNSArrayを作成し、それを - (void)viewDidLoadメソッドに割り当て、 - (void)で解放することができます。viewDidUnload – Lolloz89

関連する問題