单击按钮时按下ios下拉菜单

时间:2014-09-12 11:10:14

标签: ios

我发现以下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];
    }
}

1 个答案:

答案 0 :(得分:0)

您发布的链接只是一个下载页面,其中包含NSViewController子类的代码,因此我无需提供完整答案的上下文。另外,链接的代码与问题中引用的代码不一致(这必须是简化版本?),所以下面的答案是指链接代码,我至少可以在其中看到实例化IBOutlet属性的位置。

此代码将两个UIPickerViews连接到两个UITextField。没有按钮也没有下拉菜单。从链接上的代码看起来,拾取器和文本字段在Interface Builder中设置和连接。我这样说是因为IBOutlet属性是在代码内部设置的,它们不会在头文件的外部接口中公开。

为了使其按预期工作,以便UIPickerViews在加载时不可见,我认为有必要在代码中实例化它们。请参阅此答案:instantiating UIPickerView for UITextField

相关问题