1

UISegmentedControlを使用してカスタムセルを作成し、次のようにセルをロードしました。

static NSString *CellIdentifier = @"Cell";

SegmentedCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) 
{
    NSArray *cells =[[NSBundle mainBundle] loadNibNamed:@"SegmentedCell" owner:nil options:nil];

    for (UIView *view in cells) 
    {
        if([view isKindOfClass:[UITableViewCell class]])
        {
            cell = (SegmentedCell *)view;
            [cell.SegmentedControl addTarget:self
                                                  action:@selector(segmentedControlChanged:)
                                        forControlEvents:UIControlEventValueChanged];        


        }
    }
}

cell.textLabel.text = @"Sample";
cell.selectionStyle = UITableViewCellSelectionStyleNone;

カスタムセルが正常に読み込まれ、SegmentedControlのアクションが表示されます。しかし、テーブルビューをスクロールすると、SegmentedControlの状態が変更されます。

4

1 に答える 1

1

dequeueReusableCellWithIdentifierを使用するテーブルビューをスクロールする場合、実際にはすべての異なるセルを保存しているわけではありません。問題を解決するには、いくつかのことを実装する必要があります。

  • セグメント化されたコントロールを設定して、押すたびにその値を変数に格納します。
  • この値を配列に入れます
  • cellForRowAtIndexPathメソッドで、配列から変数を取得し、セグメント化されたコントロールの値を変数のこの値に設定します。
于 2012-07-03T14:49:53.873 に答える