1

ナビゲーション コントローラーに配置されたテーブル ビューがあります。テーブル ビューのセルの幅は元より小さく、背景はイメージです。「選択した色」を設定するにはどうすればよいですか? これまでの私のコードは次のとおりです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    static NSString *CellIdentifier = @"ApplicationCell";

    ApplicationCell *cell = (ApplicationCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil)
    {
        cell = [[CompositeSubviewBasedApplicationCell alloc] initWithStyle:UITableViewCellStyleDefault
                                                            reuseIdentifier:CellIdentifier];



    }
return cell;
}


- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
    {
        cellContentView = [[CompositeSubviewBasedApplicationCellContentView alloc] initWithFrame:CGRectInset(self.contentView.bounds, 0.0, 1.0) cell:self];
        cellContentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
        cellContentView.contentMode = UIViewContentModeRedraw;

        //here i'm making the cells smaller in width than the rest of the tableView
        CGRect framme = cellContentView.frame;

        framme.size.width = framme.size.width-58;
        //set the left space
        framme.origin.x = framme.origin.x+29;

        [cellContentView setFrame:framme];
        [self.contentView addSubview:cellContentView];
    }
    return self;
}

ここに私のテーブルビューが選択されていません

選択した

4

2 に答える 2

2

TableViewCellにはbackgroundViewと がありselectedBackgroundViewます。これらを背景に使用し、ラベルと画像ビューのみを に配置しますcontentView

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])
    {
        UIView* backgroundView = [[UIView alloc] initWithFrame:self.bounds];
        UIView* visibleBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(29.0f, 0.0f, backgroundView.bounds.size.width - 58.0f, backgroundView.bounds.size.height)];
        // configure the visibleBackgroundView with the color you want for unselected cell here
        [backgroundView addSubview:visibleBackgroundView];
        self.backgroundView = backgroundView;

        UIView* selectedBackgroundView = [[UIView alloc] initWithFrame:self.bounds];
        UIView* visibleSelectedBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(29.0f, 0.0f, backgroundView.bounds.size.width - 58.0f, backgroundView.bounds.size.height)];
        // configure the visibleSelectedBackgroundView with the color you want for selection here
        [selectedBackgroundView addSubview:visibleSelectedBackgroundView];
        self.selectedBackgroundView = selectedBackgroundView;

        // configure your content view with all the labels you need here
    }
    return self;
}
于 2012-10-19T10:56:20.143 に答える
1

UITableViewCellはUiViewのサブクラスであるため、backgroundColorなどのすべてのUIViewクラスプロパティを使用できます。Madboyが述べたように、プロパティとしてbackgroundViewとselectedBackgroundViewもあるため、これらのプロパティを操作してカスタマイズされたセルにすることができます。

于 2012-10-19T11:14:59.797 に答える