Я пытаюсь создать несколько просмотров в одном представлении в Objective- C. До сих пор я создал 3 разных текстовых поля, и я хочу, чтобы три из них имели разные виды выбора, если я нажму на них. скажем, если щелкнуть текстовое поле № 1, откроется массив № 1 и текстовые поля № 2 - вторые, а текстовые поля - третье. Если я щелкаю по первому и второму текстовым полям, отображается связанный вид средства выбора, но если я щелкаю по третьему виду, средство выбора не отображается.
- (void) viewDidLoad {
isBloodGroupFieldSelected = YES;
isGenderGroupFieldSelected = YES;
// Выполнить любую дополнительную настройку после загрузки представления.
bloodGroup = [[UITextField alloc] initWithFrame: CGRectMake (10, 100, self.view.frame.size.width-10,30)];
[self.view addSubview: bloodGroup] ;
txtField1 = [[UITextField alloc] initWithFrame: CGRectMake (10, 160, self.view.frame.size.width-10,30)];
txtField1.delegate = self;
[self.view addSubview: txtField1];
txtField2 = [[UITextField alloc] initWithFrame: CGRectMake (10, 210, self.view.frame.size.width-10,30) ];
txtField2.delegate = self;
[self.view addSubview: txtField2];
dataArray = [[NSMutableArray alloc] initWithObjects: @ "A +", @ "A -", @ "B +", @ "B -", @ "O +", @ "O-", nil];
sexArray = [[NSMutableArray alloc] initWithObjects: @ "Male", @ "Female", nil];
ageArray = [[NSMutableArray alloc] initWithOb jects: @ "Age1", @ "Age2", nil];
myPickerView = [[UIPickerView alloc] init];
[myPickerView setDataSource: self];
[myPickerView setDelegate: self];
myPickerView.showsSelectionIndicator = YES;
UIBarButtonItem * doneButton = [[UIBarButtonItem alloc] initWithTitle: @ "Done" стиль самопознания: UIBartBileton: done:)];
UIToolbar * toolBar = [[UIToolbar alloc] initWithFrame: CGRectMake (0, self.view.frame.size.height- myPickerView.frame.size.height-50, 320, 50) ];
[toolBar setBarStyle: UIBarStyleBlackOpaque];
NSArray * toolbarItems = [NSArray arrayWithObjects: doneButton, nil];
[toolBar setItems: toolbarItems] * *
bloodGroup.inputView = myPickerView;
bloodGroup.inputAccessoryView = toolBar;
// txtField1
txtField1.inputView = myPickerView;
txtField1. inputAccessoryView = toolBar;
txtField2.inputView = myPickerView;
txtField2.inputAccessoryView = toolBar;
}
- (void) выполнено: (id) отправитель {
[bloodGroup resignFirstResponder];
[ txtField1 resignFirstResponder];
[txtField2 resignFirstResponder];
}
отметка прагмы - UIPickerViewDataSource
// # 3 - (NSInteger) numberOfererponents: UIPerPhone: *) pickerView {
if (isBloodGroupFieldSelected) {
return 1;
}
else if (! isBloodGroupFieldSelected) {
return 1;
}
иначе if (! isGenderGroupFieldSelected) {
return 1;
}
return 0;
}
- (NSInteger) pickerView: (UIPickerView *) pickerView numberOfRowsInComponent: (NSInteger) component {
if (isBloodGroupFieldSelected) {
return [dataArray count ];
}
иначе, если (! IsBloodGroupFieldSelected)
{
return [счетчик гендерного массива];
} * 111 8 *
else if (! IsGenderGroupFieldSelected)
{
return [ageArray count];
}
return 0;
}
отметка прагмы - UIPickerViewDelegate
// # 5 - (NSString *) pickerView: (UIPickerView *) pickerView titleForRow: строка (NSInteger) для компонента: компонент: (NSInteger) {
if (isBloodGroupFieldSelected) {
вернуть dataArray [row];
}
иначе, если (! IsBloodGroupFieldSelected)
{
возвращать поле гендерного массива [строка];
}
еще, если (! IsGenderGroupFieldSelected)
{
return ageArray [row];
}
return 0;
}
// # 6 - (void) pickerView: (UIPickerView *) pickerView didSelectRow: (NSInteger) строка inComponent: (NSInteger) компонент {
if (isBloodGroupFieldSelected) {
bloodGroup.text = dataArray [row];
}
иначе if (! IsBloodGroupFieldSelected)
{
txtField1.text = гендерArray [строка];
}
иначе if (! IsGenderGroupFieldSelected)
{
txtField2.text = ageArray [row];
}
}
- (void) textFieldDidBeginEditing: (UITextField *) textField {
if (textField == bloodGroup) {
isBloodGroupFieldSelected = YES;
}
else if (textField == txtField1) {
isBloodGroupFi eldSelected = NO;
isGenderGroupFieldSelected = YES;
}
else if (textField == txtField2) {
isGenderGroupFieldSelected = NO;
isBloodGroupFieldSelected = NO;
}
[myPickerView reloadAllComponents];
}