Я нашел следующее site с кодом, который должен открыть кнопку, и один раз щелкнул его, и вы увидите раскрывающееся меню. Никакая кнопка не была показана, и, следовательно, функция не может быть проверена.Выпадающее меню ios при нажатии кнопки
Я что-то не хватает? Нужно ли создавать элемент в пользовательском интерфейсе и связывать его?
Вот код, у меня есть:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.countriesArray = [[NSArray alloc] initWithObjects:@"Saudi Arabia", @"United Arab Emirates", @"Bahrain", nil];
self.countriesPicker = [[UIPickerView alloc] initWithFrame:CGRectZero];
[self attachPickerToTextField:self.countriesTextfield :self.countriesPicker];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)attachPickerToTextField: (UITextField*) textField :(UIPickerView*) picker{
picker.delegate = self;
picker.dataSource = self;
textField.delegate = self;
textField.inputView = picker;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.countriesTextfield resignFirstResponder];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (pickerView == self.countriesPicker){
return self.countriesArray.count;
}
return 0;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (pickerView == self.countriesPicker){
return [self.countriesArray objectAtIndex:row];
}
return @"???";
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (pickerView == self.countriesPicker){
self.countriesTextfield.text = [self.countriesArray objectAtIndex:row];
}
}
Этот вид имеет методы делегата UIPickerView, но правильно ли он подключен к раскадровке? Если нет, ни один из этих методов делегирования для настройки pickerview не будет зафиксирован. Нет ничего о кнопке - просто создание pickerView, загруженное именами стран из жестко заданного массива параметров. Когда выбирается строка выбора, она помещает это название страны в текстовое поле. Линия, в которой он устанавливает 'textField.inputView = picker', должен быть тем, что устанавливает сборщик вместо клавиатуры. Не появляется ли это при щелчке в текстовом элементе? – mc01