2014-09-12 8 views
0

Я нашел следующее 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]; 
    } 
} 
+0

Этот вид имеет методы делегата UIPickerView, но правильно ли он подключен к раскадровке? Если нет, ни один из этих методов делегирования для настройки pickerview не будет зафиксирован. Нет ничего о кнопке - просто создание pickerView, загруженное именами стран из жестко заданного массива параметров. Когда выбирается строка выбора, она помещает это название страны в текстовое поле. Линия, в которой он устанавливает 'textField.inputView = picker', должен быть тем, что устанавливает сборщик вместо клавиатуры. Не появляется ли это при щелчке в текстовом элементе? – mc01

ответ

0

Эта ссылка размещена только загрузка страницы с кодом для подкласса NSViewController, поэтому нет никакого контекста для меня, чтобы дать тщательный ответ. Кроме того, связанный код не соответствует цитируемому коду в вопросе (это должна быть упрощенная версия?), Поэтому мой ответ ниже относится к связанному коду, в котором я могу хотя бы увидеть, где создаются свойства IBOutlet.

Этот код соединяет два UIPickerViews с двумя UITextFields. Нет кнопки и выпадающего меню. Из кода в ссылке видно, что сборщики и текстовые поля настроены и подключены в Interface Builder. Я говорю это, потому что свойства IBOutlet устанавливаются внутри кода, и они не отображаются во внешнем интерфейсе в файле заголовка.

Чтобы сделать это, как предполагается, так, чтобы UIPickerView не были видны при загрузке, я думаю, что их необходимо создать в коде. См. Этот ответ: instantiating UIPickerView for UITextField

+0

Где вы видите: 2? Там есть только страныПикер и страныTextfield. – mc01

+0

Спасибо, что указали это. Будет редактировать, чтобы исправить. Ответ, который я дал, основывался на связанных файлах, которые, похоже, не соответствуют котируемому коду. – RishiG

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