【发布时间】:2014-09-12 11:10:14
【问题描述】:
我发现以下site 的代码应该显示一个按钮,一旦单击,它就会显示一个下拉菜单。未显示任何按钮,因此无法测试功能。
我错过了什么吗?我必须在 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。选择拾取器行时,它将该国家名称放入TextField中。它设置
textField.inputView = picker的行应该是设置选择器而不是键盘显示的位置。在textView中点击是不是没有出现?
标签: ios