UitableViewCell에서 액세서리 공개 이미지를 사용자 정의하려면 어떻게해야합니까?
-
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에서 가장 쉬운 방법은 아니지만 멋진 액세서리보기를 스타일링 할 수있는 많은 유연성을 제공합니다.
나는 다음과 같이 할 것이다 :
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;
}