UitableViewCell에서 액세서리 공개 이미지를 사용자 정의하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/403748

  •  03-07-2019
  •  | 
  •  

문제

UitableView에서 표준 공개 액세서리 이미지의 사용자 정의 버전을 사용하고 싶습니다. 어떻게 할 수 있습니까? 나는이 기본에 대해서는 서브 클래스를 uitableviewcell이 필요하지 않기를 바라고있다.

도움이 되었습니까?

해결책

사용자 정의보기를 만들어 accessoryView 의 속성 UITableViewCell 물체. 같은 것 :

myCell.accessoryView = [[ UIImageView alloc ] 
                       initWithImage:[UIImage imageNamed:@"Something" ]];

다른 팁

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

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


    return cell;
}

글쎄, 나는 위에 주어진 도움말 코드로 이것을한다.

나는 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 ] ;

이있다 애플의 좋은 예 사용 방법을 보여줍니다 UIControl 이러한 종류의 AccessoryView 사용자 정의를 충족합니다.

우선 - (void)drawRect:(CGRect)rect UIControl에서 가장 쉬운 방법은 아니지만 멋진 액세서리보기를 스타일링 할 수있는 많은 유연성을 제공합니다.

enter image description here

나는 다음과 같이 할 것이다 :

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 개의 Upvotes와 2 개의 다운 보트가 있기 때문입니다!

위의 코드를 시도했는데 더 이상 작동하지 않는 것 같습니다. 어쩌면이 게시물의 나이로 인해 맞춤형 액세서리보기를 제공하는 라인을 버릴 것입니다.

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

누군가가 이것이 유용하다는 것을 알기를 바랍니다.

참고 : 태그로 사용자 정의 셀을 설정하지 마십시오 : 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;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top