我發現以下site代碼應該顯示一個按鈕,一旦點擊,它會顯示一個下拉菜單。沒有顯示按鈕,因此無法測試功能。ios按鈕上的下拉菜單點擊
我錯過了什麼嗎?我是否必須在UI中創建一個元素並將其鏈接起來?
這裏是我的代碼:
- (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中。 它設置'textField.inputView = picker'的線應該是設置選取器而不是鍵盤顯示的線。當你點擊textView時它不會出現嗎? – mc01 2014-09-12 19:02:10