2012-04-17 1 views
0

저는 사용자 정의 UIPickerView가 UIActions 시트에 임베드되어 있는데, UIActions 시트는 호출 될 때 화면 절반이 나옵니다. 훌륭하게 작동합니다. 문제는 모든 데이터가로드 된 후 barrelPicker가 처음으로 나타날 때 선택 항목으로 '가장 가능성있는'결과를 표시하도록하려는 것입니다.
사용자 지정 선택기가 작업 시트에 포함되기 전에 UIViewController에서 가져 왔고 ViewController의 viewDidLoad 메서드에서 "showProbableResults"(사용자 지정 메서드)를 호출하고있었습니다. 그 시점에서 UIPickerView가로드되어 준비가되었습니다. 현재이 방법을 호출 할 수있는 동일한 위치가 있습니까? 아니면 전체 디자인을 재고 할 필요가 있습니까? 본질적으로 필요한 것은 UIPickerView가로드 된 후에 이것을 호출하는 곳입니다.UIPickerController - 로딩시 특정 선택을 표시하고 싶습니다.

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

}

+0

작업 시트/선택 도구가 사용자 정의 클래스입니까? 코드를주세요. – AMayes

+0

예 액션 시트와 피커는 NSObject 의 커스텀 클래스입니다. 위의 코드는 무엇입니까? –

답변

0

하나의 옵션은 모든 관점에서 @optional

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

호출 후 here 도시 된 바와 같이, 재사용 피커 뷰를 만들고입니다 컨트롤러 또는 NSObject (예 : UIActionSheetDelegate). 다음과 같이

귀하의 다른 옵션은 표준 사전 선택 선택을 설정하는 것입니다 : 당신은 대신 미리가되는, 사용자가 설정 한 다른 변수를 가지고 있고, selectRow:inComponent:animated: 액세스들을 가질 수

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

.

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

희망이 있습니다.

+0

이것은 내가 뭘 찾고 있는지 알고 있다고 가정합니다. 초기 선택을 설정하고 싶습니까, 아니면 pickerView를 초기화 할 곳을 알아 내려고 했습니까? – AMayes

+0

초기 선택 설정 만! 귀하의 제안을 시도하고 그것이 작동하고 곧 받아 들일 지 확인하십시오 - 정말 고마워요! –

+0

불행히도 나를 위해 작동하지 않는 옵션 # 2를 시도했습니다. 선택 도구가 여전히 행과 구성 요소를 설정하고 예외를 throw합니다. 좀 더 명확히하기 위해, 필자는 nsdisctionary에서 변수를로드 한 3 개 구성 요소 선택기를 사용하고 두 번째 구성 요소의 값은 첫 번째 구성 요소에 무엇이 있는지에 따라 달라지며 세 번째 종속 요소의 값은 첫 번째 구성 요소와 두 번째 구성 요소 ... 그래서 나는 전체 배럴 픽커를 적재하고 선택을하기 전에 갈 준비를해야합니다. 나는 그것을 집어 넣을 수있는 쉬운 "UIPicker finished loading"방법이있을 것이라고 생각했다. –