52

UITableView で標準の開示アクセサリ イメージのカスタム バージョンを使用したいと考えています。これどうやってするの?この基本的なものには UITableViewCell のサブクラス化が必要ないことを願っています。

4

9 に答える 9

125

accessoryViewカスタム ビューを作成し、それをオブジェクトのプロパティに割り当てる必要がありUITableViewCellます。何かのようなもの:

myCell.accessoryView = [[ UIImageView alloc ] 
                       initWithImage:[UIImage imageNamed:@"Something" ]];
于 2008-12-31T19:01:33.050 に答える
10
- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    UIImage *indicatorImage = [UIImage imageNamed:@"Arrow.png"];
    cell.accessoryView =[[[UIImageView alloc]  initWithImage:indicatorImage] autorelease];


    return cell;
}

上記のヘルプコードを使用してこれを行います

于 2010-08-20T04:55:54.780 に答える
7

Greg と同じ問題に遭遇しました。アクセサリ ビューが追跡されません (UIImageView を使用している場合)。

私はこのようにそれを解決しました:

UIImage * image = [ UIImage imageNamed:@"disclosure-button-grey.png" ] ;
UIControl * c = [ [ UIControl alloc ] initWithFrame:(CGRect){ CGPointZero, image.size } ] ;

c.layer.contents = (id)image.CGImage ;
[ c addTarget:self action:@selector( accessoryTapped: ) forControlEvents:UIControlEventTouchUpInside ] ;
cell.accessoryView = c ;
[ c release ] ;
于 2010-01-08T08:08:30.713 に答える
1

この種の accessoriesView のカスタマイズを実現するために使用する方法を示すAppleの良い例があります。UIControl

- (void)drawRect:(CGRect)rectUIControl でのオーバーライドは最も簡単な方法ではありませんが、優れたアクセサリ ビューのスタイルを柔軟に設定できます。

ここに画像の説明を入力

于 2015-01-14T08:27:48.670 に答える
1

私は次のようにします:

UIImageView *chevronImgVw = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chevron_accessory_vw_img.png"]];
chevronImgVw.frame = CGRectMake(cell.accessoryView.frame.origin.x, cell.accessoryView.frame.origin.y, 10, 20);
cell.accessoryView = chevronImgVw;

反対票を投じる前に、これを試してください!現時点では、2 つの賛成票と 2 つの反対票があるためです。

于 2014-03-02T05:56:32.820 に答える
-1

注: カスタム セルを tag:0 に設定しないでください。そのタグは textLabel ビュー用に予約されています。Xcode ストーリーボードでタグを設定する場合、カスタム ビュー/ラベルのタグを 1 以上に設定する必要があります。

Apple の例に注意してください。

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath (NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

    UILabel *label;

    label = (UILabel *)[cell viewWithTag:1];
    label.text = [NSString stringWithFormat:@"%d", indexPath.row];

    label = (UILabel *)[cell viewWithTag:2];
    label.text = [NSString stringWithFormat:@"%d", NUMBER_OF_ROWS - indexPath.row];

    return cell;
}
于 2013-02-13T16:44:50.960 に答える
-1

上記のコードを試してみましたが、おそらくこの投稿の古さのせいでうまくいかないようです。そのため、カスタマイズされたアクセサリ ビューを提供してくれた行を破棄します。

[cell setAccessoryView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrowBtn"]]];

誰かがこれが役に立つことを願っています。

于 2014-07-28T18:35:34.000 に答える