0

テーブル ビューの中央のセルは常にピッカーのように強調表示されます。中央のセルを選択すると、その値が返されます。タイムセンターポイントでテーブルをスクロールすると、値のみが変化することを強調表示する必要があります (ピッカーアクションのように) これを行うには? このタスクのサンプル コード。前もって感謝します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        UILabel     *modelLabel;
        UIButton    *modelButton;
        modelButton                 = [UIButton buttonWithType:UIButtonTypeCustom];
        modelButton.frame           = CGRectMake(0.0, 0.0, LABEL_WIDTH, LABEL_HEIGHT);
        modelButton.tag             = indexPath.row+100;
        [modelButton addTarget:nil action:@selector(modelButtonAction:) forControlEvents:UIControlEventTouchUpInside];
        [[cell contentView] addSubview:modelButton];
        modelLabel                  = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, LABEL_WIDTH, LABEL_HEIGHT)];
        modelLabel.text             = [NSString stringWithFormat:@"%@", [[modelArray objectAtIndex:indexPath.row] valueForKey:@"Model"]];
        modelLabel.tag              = indexPath.row+1000;
        modelLabel.backgroundColor  = [UIColor clearColor];
        modelLabel.textColor        = [UIColor grayColor];
        modelLabel.alpha            = 0.5;
        modelLabel.textAlignment    = UITextAlignmentCenter;
        modelLabel.font             = EUROSLITE_FONT(14);
        [[cell contentView] addSubview:modelLabel];
    }

    return cell;
}

行数は、このように 700、800 です。

4

1 に答える 1

1

AUITableViewは拡張しUIScrollViewます。したがって、次のデリゲートを実装できます。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

そこでチェックしてscrollView.contentOffset、対応するセルを強調表示に設定できます。これは中央のセルではないことに注意してください。(int)(scrollView.frame.size.height/2)-(int)(cell.frame.size.height/2)を追加する必要がありますscrollView.contentOffset.y

例(他のすべてのセルのハイライトを解除してください):

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    [[tableView visibleCells] makeObjectsPerformSelector:@selector(setHighlighted:) withObject:[NSNumber numberWithBool:NO]];

    CGPoint center = CGPointMake(0, scrollView.contentOffset.y+(int)(scrollView.frame.size.height/2));
    NSIndexPath *cellIndexPath = [tableView indexPathForRowAtPoint:center];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:cellIndexPath];
    [cell setHighlighted:YES];
}
于 2013-01-29T11:02:34.663 に答える