2010-08-24 45 views
0

我想創建一個外觀和工作方式類似於itune商店帳戶的國家/地區選擇字段的選擇器。 這是我正在談論的。iphone的pickerview看起來像國家選擇功能

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

此選擇器不具有行高亮顯示。它在所選行的前面標有「正確」的符號。用戶可以滾動這個選擇器,然後選擇該行,這樣「正確的」符號將出現在新選擇的行的前面。 有人可以幫忙嗎?

回答

0

我不熟悉的編碼應用,但對於一個基於瀏覽器的UI(Safari瀏覽器),你只需使用一個簡單的下拉菜單:

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

猜測無論是在iPhone上的等價SDK應該是一樣的。

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]; 
}