0

初めまして、タイトル失礼します。

アプリに 1 つのセグメント コントロールがあります。セグメントのタイトルはサーバーから取得され、それに応じて設定されます (つまり、YES と NO)。

また、各セグメントに対応する ID 値が 1 つあります。したがって、ユーザーが [はい] を選択すると、対応する ID 8 が保存され、ユーザーが [いいえ] を選択すると、対応する ID 5 が保存されます (8 と 5 はサーバーから取得されます)。

タグを設定してみましたがだめでした。

誰でもこのシナリオで私を助けてくれませんか。

よろしくお願いします。

 //Code
     for(WTMobileDataService_DataAccess_ClsYesNo *temp in YesNo)
        {
            NSString *s = [NSString stringWithFormat:@"%@",temp.m_YesNoDescription];
             ind = [temp.m_PK_YesNoID intValue] - 1;

            [items addObject:s];
            [serverids addObject:[NSString stringWithFormat:@"%d",ind]];

           // [segmentControl setTitle:s forSegmentAtIndex:ind];
        }

segmentControl  = [[UISegmentedControl alloc]initWithItems:items];
4

3 に答える 3

0

2 つの配列を用意します。1 つはタイトル、もう 1 つは値です。ユーザーがセグメントを選択すると、選択したセグメントを使用してタイトルが返され、それを使用してタイトルのインデックスが取得されます。次に、values 配列を参照すると、対応する値が得られます。

タイトルがキーで、値が... 値である NSDictionary を使用して、同じことを達成することもできます。

このようなもの:

NSArray titles = @[@"YES", @"NO"];
NSArray values = @[8, 5];

UISegmentedControl control; // Likely defined as a property
if ([control selectedSegmentIndex] != UISegmentedControlNoSegment) {
    NSString title = [control titleForSegmentAtIndex:];

    int index = [titles indexOfObject:title];
    NSString value = [values objectAtIndex:index];
}
于 2013-04-10T16:20:58.703 に答える
0

2 つの値が自然にグループ化されているように見えるので、2 つの値を一緒に保持するオブジェクトを作成したくなるでしょう。

@interface SegmentInfo : NSObject

@property (nonatomic, copy)  NSString  *title;
@property (nonatomic, assign NSInteger  value;

- (instancetype)initWithTitle:(NSString *)title value:(NSInteger)value;

@end

@implementation SegmentInfo

- (instancetype)initWithTitle:(NSString *)title value:(NSInteger)value
{
  self = [super init];
  if (self) {
    _title = [title copy];
    _value = value;
  }
  return self;
}

@end

次に、これらのオブジェクトにデータを入力し、配列に格納します

self.segmentInfos = @[
  [[SegmentInfo alloc] initWithTitle:@"Yes" value:8],
  [[SegmentInfo alloc] initWithTitle:@"No"  value:5],
];

セグメント化されたコントロールを設定するには、すべてのタイトルを配列に取得するだけです

some set up method
{
  NSArray *segmentTitle = [self.segmentInfo valueForKey:@"title"];
  self.segmentControl   = [[UISegmentedControl alloc] initWithItems:segmentTitle];
}

値の変更を処理するメソッドでは、同じインデックスでオブジェクトを取得して値を取得するだけです

- (IBAction)segmentedControlChanged:(UISegmentedControl *)segmentedControl
{
  SegmentInfo *selectedSegment = self.segmentInfos[segmentedControl.selectedSegmentIndex];
  NSLog(@"title: %@, value: %d", selectedSegment.title, selectedSegment.value);
}
于 2013-04-10T22:34:57.367 に答える