iTunes ストア アカウントの国選択フィールドのように機能するピッカーを作成したいと考えています。これが私が話していることです。
http://i38.tinypic.com/5p0w91.jpg
このピッカーには行が強調表示されていません。選択した行の前にマークされた「正しい」記号があります。ユーザーはこのピッカーをスクロールして行を選択できるため、新しく選択した行の前に「正しい」記号が表示されます。誰か助けてくれませんか?
iTunes ストア アカウントの国選択フィールドのように機能するピッカーを作成したいと考えています。これが私が話していることです。
http://i38.tinypic.com/5p0w91.jpg
このピッカーには行が強調表示されていません。選択した行の前にマークされた「正しい」記号があります。ユーザーはこのピッカーをスクロールして行を選択できるため、新しく選択した行の前に「正しい」記号が表示されます。誰か助けてくれませんか?
これは、カスタム コンポーネント ビューを備えたピッカーを使用して比較的簡単に実現できます。インスタンス変数を使用して選択した行を追跡し、それに応じてラベルの色を変更します。チェック マークを含めたい場合は、さらに一歩進んで、単純な UILabel ではなく、UIView のカスタム サブクラスを使用する必要があります。
@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];
}
私はアプリのコーディングには詳しくありませんが、ブラウザー ベースの UI (Safari) の場合は、単純なドロップダウン メニューを使用するだけです。
<select>
<option>Country 1</option>
<option>Country 2</option>
...
<option>Country N</option>
</select>
iPhone SDK で同等のものを推測しても、同じように動作するはずです。