0

呼び出されたときに画面の半分に表示される UIActionsheet に埋め込まれたカスタム UIPickerView があります。よく働く。問題は、バレルピッカーが最初に表示されたときに(すべてのデータがロードされた後)、「最も可能性の高い」結果を選択として表示したいことです。
カスタム ピッカーをアクション シートに埋め込む前に、私はそれを UIViewController に入れ、ViewController の viewDidLoad メソッドで "showProbableResults" (私のカスタム メソッド) を呼び出すだけでした。荷物を積み込んで準備万端。このメソッドを今呼び出す同等の場所はありますか、それとも設計全体を再考する必要がありますか? 基本的に、UIPickerView が読み込まれた後にこれを呼び出す場所が必要です。

    - (void)startWithDelegate:(UIViewController <ImageProcessingDelegate> *)sender

{
self.delegate = sender;
self.showFirstBottle = YES;
[self start];

}

- (void) start {

self.actionSheet = [[UIActionSheet alloc] initWithTitle:@"Choose Something"
                                                         delegate:self
                                                cancelButtonTitle:nil
                                           destructiveButtonTitle:nil
                                                otherButtonTitles:nil];

[self.actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

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

NSLog(@"1.) About to alloc the picker");

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

[self.actionSheet addSubview:self.vintagePicker];
[self.vintagePicker release];

UISegmentedControl *nextButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Next"]];
nextButton.momentary = YES; 
nextButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
nextButton.segmentedControlStyle = UISegmentedControlStyleBar;
nextButton.tintColor = [UIColor blackColor];
[nextButton addTarget:self action:@selector(show:) forControlEvents:UIControlEventValueChanged];
[self.actionSheet addSubview:nextButton];
[nextButton release];

UISegmentedControl *backButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Back"]];
backButton.momentary = YES; 
backButton.frame = CGRectMake(10, 7.0f, 50.0f, 30.0f);
backButton.segmentedControlStyle = UISegmentedControlStyleBar;
backButton.tintColor = [UIColor blackColor];
[backButton addTarget:self action:@selector(cancel:) forControlEvents:UIControlEventValueChanged];
[self.actionSheet addSubview:backButton];
[backButton release];

[self.actionSheet showInView:_delegate.parentViewController.tabBarController.view]; // show from our table view (pops up in the middle of the table)
[self.actionSheet setBounds:CGRectMake(0, 0, 320, 485)];

}

4

1 に答える 1

0

1 つのオプションは、ここに示すように再利用可能なピッカー ビューを作成し、@optional を呼び出すことです。

-(void)setInitialPickerValueToRow:(int)i inComponent:(int)j animated:(BOOL)k{
    [pickerView selectRow:i inComponent:j animated:k];
}

任意のビュー コントローラーまたは NSObject (UIActionSheetDelegate など) から。

もう 1 つのオプションは、次のように、事前に選択された標準の選択を設定することです。

self.vintagePicker = [[UIPickerView alloc] initWithFrame:pickerFrame];
self.vintagePicker.showsSelectionIndicator = YES;
self.vintagePicker.dataSource = self;
self.vintagePicker.delegate = self;
[self.actionSheet addSubview:self.vintagePicker];
[self.vintagePicker selectRow:0 inComponent:0 animated:NO];

selectRow:inComponent:animated:事前に設定する代わりに、設定したさまざまな変数を使用して、それらにアクセスすることもできます。

[self.vintagePicker selectRow:myRow inComponent:0 animated:NO];

お役に立てれば!

于 2012-04-17T15:34:27.283 に答える