2012-04-17 2 views
0

У меня есть пользовательский UIPickerView, встроенный в таблицу UIA, которая появляется на половине экрана при вызове. Прекрасно работает. Проблема в том, что я хочу, чтобы barrelPicker показывал «наиболее вероятные» результаты как выбор, когда он впервые появляется (после того, как все данные были загружены в него).
До того, как пользовательский сборщик был встроен в лист действий, я использовал его в UIViewController и просто вызывал «showProbableResults» (собственный метод) в методе viewDidLoad для ViewController, потому что я знал в этот момент, 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

Одним из вариантов является создание многоразового вид палитры, как показано here, а затем вызвать @optional

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

из любой точки зрения контроллер или NSObject (например, ваш UIActionSheetDelegate).

Другой вариант заключается в установке стандартного предварительно выбран выбор следующим образом:

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

Надеюсь, это поможет!

+0

Предполагается, что я даже знаю, что вы ищете. Вы просто хотели установить начальный выбор или пытались выяснить, где инициализировать pickerView? – AMayes

+0

просто устанавливает начальный выбор! Попробуй свое предложение и посмотри, сработает ли оно и скоро придет - большое тебе спасибо! –

+0

попробовал вариант № 2, который, к сожалению, не работает для меня. Сборщик по-прежнему настраивает свои ряды и компоненты и выдает исключение. Чтобы быть более явным, у меня есть 3-компонентный сборщик, который загружается с переменными из nsdisctionary, а значения во втором компоненте зависят от того, что находится в первом компоненте, а значения в третьем зависят от первого и второго ... Так что мне нужно, чтобы весь сборщик стволов был загружен и готов к работе, прежде чем я смогу сделать выбор. Я подумал, что может быть какой-то простой метод «UIPicker finished load», в который я мог бы вставить его. –

Смежные вопросы