1

UIPickerViewに「完了」、「キャンセル」ボタンを表示させる方法を探していました。
グーグルで良い投稿を見つけました。それらすべてにUIActionSheetが含まれていました。

だから私はそれをしました

コンテナはUIView
actionSheetはUIActinSheet
pickerViewはUIPickerView

viewDidLoadで:

container = [[[UIView alloc] initWithFrame:CGRectMake(rect.origin.x,rect.origin.y, rect.size.width, rect.size.height)] autorelease];
[self.view addSubview:container];

actionSheet = [[UIActionSheet alloc] initWithTitle:@"myTitle" 
                                          delegate:nil
                                 cancelButtonTitle:nil
                            destructiveButtonTitle:nil
                                 otherButtonTitles:nil];

[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

CGRect pickerFrame = CGRectMake(0, 40, 0, 0);

pickerView = [[[UIPickerView alloc] initWithFrame:pickerFrame]autorelease];
pickerView.showsSelectionIndicator = YES;
pickerView.dataSource = self;
pickerView.delegate = self;

UIToolbar *toolbar = [[[UIToolbar alloc] init] autorelease];
toolbar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
NSMutableArray *items = [[[NSMutableArray alloc] init] autorelease];
[items addObject:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(dismissActionSheet)] autorelease]];
[items addObject:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:@selector(goActionSheet)] autorelease]];
[items addObject:[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(goActionSheet)] autorelease]];
[toolbar setItems:items animated:NO];

[actionSheet addSubview:toolbar];
[actionSheet addSubview:pickerView];

[actionSheet showInView:container];

[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];

アプリは素晴らしく起動し、すべてがオンラインになっているはずのようにうまく表示されます。[actionSheet showInView:container];

さて、ActionSheetを閉じようとすると、うまく機能します。

dismissActionSheetで:

[actionSheet dismissWithClickedButtonIndex:1 animated:NO];

問題は、どうすればそれを再び表示させることができるかということです。

私が使用するとき:

[actionSheet showInView:container];

ボタンを使ってツールバーを下から選択するだけです。それだけです。PickerView全体が下部にあり、表示されません。

私はここで何が間違っているのですか?

4

2 に答える 2

1

アクションシートは、スタンドアロンの「今すぐ選択」プレゼンターであるという点で、アラートのように使用することを目的としています。通常、iPhoneでは途中までしか表示されません。

ピッカーはアクションシートから独立している必要があります。「完了」ボタンと「キャンセル」ボタンが必要な場合は、ピッカーのナビゲーションバーに追加することを検討してください。

于 2012-07-13T13:32:43.503 に答える
0

PickerViewで[完了]ボタンと[キャンセル]ボタンのあるUIToolBarを使用すると、これは簡単になります。

于 2012-07-13T14:37:51.080 に答える