iphone的pickerview看起来像乡村选择功能

时间:2010-08-24 03:33:25

标签: iphone uipickerview uipickerviewcontroller

我想创建一个看起来像isune商店帐户的国家/地区选择字段的选择器。 这就是我所说的。

http://i38.tinypic.com/5p0w91.jpg

此选择器没有突出显示行。它在所选行前面标有“正确”标记。用户可以滚动此选择器,然后选择该行,这样“正确”的符号将出现在新选择的行的前面。 有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

使用具有自定义组件视图的选择器可以相对容易地完成此操作。使用实例变量跟踪所选行,并相应地更改标签的颜色。如果你想要包含复选标记,你需要更进一步,使用UIView的自定义子类而不是简单的UILabel。


@interface ViewContainingPicker
{
    NSUInteger mySelectedRow;
}
@end

@implementation ViewContainingPicker

// Init, Picker setup, etc
- (UIPickerView *)myPickerView
{
    // Create picker, set mySelectedRow to NSNotFound
    mySelectedRow = NSNotFound;
    return myPickerView;
}

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
    UILabel *label = (UILabel *)view;

    if (nil == label) {
        UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, PICKER_WIDTH, PICKER_ROW_HEIGHT)] autorelease];
    }

    label.text = @"Label for this row";

    // Selected Row will be blue
    if (row == mySelectedRow) {
        label.textColor = [UIColor blueColor];
    } else {
        label.textColor = [UIColor blackColor];
    }

    return label;
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    // Just set selected component and reload, color will change in dataSource pickerView:viewForRow:forComponent:reusingView:
    mySelectedRow = row;
    [pickerView reloadComponent:component];
}

答案 1 :(得分:0)

我不熟悉编码应用程序,但对于基于浏览器的UI(Safari),您只需使用一个简单的下拉菜单:

<select>
<option>Country 1</option>
<option>Country 2</option>
...
<option>Country N</option>
</select>

猜测iPhone SDK中的等效内容应该是相同的。