1

ボタンクリックでドロップダウンを作成するために使用したカスタム動的テーブルを作成していますが、正常に動作します。テーブルのすべてのセルが真っ白になりました。テーブルに背景を追加することはできますが、セルに背景を追加するのに問題があります。これは、テーブルを作成するコードです。これとハイライトされた状態のセルに背景画像を追加するにはどうすればよいですか? また、その境界をカスタマイズすることも可能ですか?

- (void)createMenuTable {

    int totalItems = [self.menuArray count];

    float originalHeight = (MENU_CELL_HEIGHT * totalItems);

    float tableHeight = (originalHeight > self.frame.size.height)? (self.frame.size.height - (originalHeight > self.frame.size.height)): originalHeight;

    float xOrigin = 0;

    if (self.menuBarPosition == POSITION_RIGHT) {
        xOrigin = self.frame.size.width - MENU_TABLE_WIDTH;
    }

    CGRect tableFrame = CGRectMake(xOrigin, 0, MENU_TABLE_WIDTH, 0);
    menuOptionsTableView = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStylePlain];
    [menuOptionsTableView setDelegate:self];
    [menuOptionsTableView setDataSource:self];
    [menuOptionsTableView setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
    [self addSubview:menuOptionsTableView];

    tableFrame.size.height = tableHeight;

    [UIView animateWithDuration:0.35 animations:^{
        menuOptionsTableView.frame = tableFrame;
    } completion:^(BOOL finished) {

    }];

}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ParentCellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ParentCellIdentifier];
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    }

    cell.textLabel.text = (self.menuArray)[indexPath.row];
    [cell.textLabel setTextAlignment:NSTextAlignmentCenter];
    [cell.textLabel setFont:MY_FONT_BOLD(14)];

    return cell;
}
4

3 に答える 3

1

このコードをcellForRowAtIndexPath:

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

   static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell;

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];


NSArray *cellSubs = cell.contentView.subviews;
for (int i = 0 ; i < [cellSubs count] ; i++)
{
    [[cellSubs objectAtIndex:i] removeFromSuperview];
}
    cell.textLable.text = "ABC";
    UIImageView *bgView = [[UIImageView alloc]initWithFrame:cell.backgroundView.frame];
        [bgView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
        bgView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
        bgView.image = [UIImage imageNamed:@"cell_bg.png"];
        [cell setBackgroundView:bgView];

     return cell;
}

選択したセルの背景

cell.selectionStyle = UITableViewCellSeparatorStyleSingleLine;
 UIView *bgColorView = [[UIView alloc] init];
    [bgColorView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"Selectedcell_bg.png"]]];
    [cell setSelectedBackgroundView:bgColorView];

編集

ラウンドラックコーナーのマッキング用

最初に追加 -->QuartzCore.frameworkプロジェクトに & ViewController.m ファイルに -> ヘッダー ファイルをインポート

#import <QuartzCore/CALayer.h>

..

CALayer *cellImageLayer = bgView.layer;
    [cellImageLayer setCornerRadius:9];
    [cellImageLayer setMasksToBounds:YES];
于 2013-10-12T10:05:56.430 に答える