UitableView 셀에서 편집시 사용자 정의 삭제 버튼
-
06-07-2019 - |
문제
나는 겪었다 이 질문 다음 코드를 보여줍니다.
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{
return @"Sagar";
}
기본 빨간색 버튼 대신 사용자 정의 이미지를 원한다면 어떻게해야합니까?
해결책
Luvieere가 맞습니다. 동일한 "삭제"은유를 원한다면 Apple이 제공하는 빨간색 버튼에 보관하고 싶습니다. 왜 변경합니까? 전 세계적으로 인식 할 수 있습니다 기준 삭제 버튼의 경우.
트윗과 같은 것을 원한다면 완전히 스 와이프의 동작을 바꾸면 자신의 관점에서 그냥 그리는 AbtableViewCell과 같은 것을 사용할 수 있습니다. 사용자 정의 테이블보기를 만들고, ToouchesBegan : Withevent :, Touches를 확인하십시오. 두 터치의 델타를 계산하십시오 (터치 마우스 마모 : Withevent :) 자신의 시야를 움직입니다.
다른 팁
이 방법을 사용자 정의 셀에서 구현하십시오
- (void)willTransitionToState:(UITableViewCellStateMask)state{
[super willTransitionToState:state];
if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) {
for (UIView *subview in self.subviews) {
if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
UIImageView *deleteBtn = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 64, 33)];
[deleteBtn setImage:[UIImage imageNamed:@"delete.png"]];
[[subview.subviews objectAtIndex:0] addSubview:deleteBtn];
[deleteBtn release];
}
}
}
}
이것은 늦은 답변이지만 누군가가 이것이 도움이되기를 바랍니다. 따라서 허용 된 대답은 나에게 복잡한 것처럼 보이며 @user1684899의 답변은 삭제 버튼의 모양을 변경하려는 경우에만 작동합니다. 삭제 버튼 (예 : 프레임, 위치 등)의 모양을 완전히 변경하려고합니다. 따라서 내 솔루션은 내 자신의 삭제 버튼을 사용자 정의 셀에 추가하고 처음에는 숨겨지고 셀이있을 때만 표시하는 것입니다. 편집 모드에서. 더 중요한 것은 iOS의 원래 삭제 버튼을 숨기고 뒤로 호환성을 지원하고 싶습니다. 여기에 내 트릭이 있습니다.
- (void)willTransitionToState:(UITableViewCellStateMask)state
{
[super willTransitionToState:state];
if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask)
{
if (!IS_IOS_7){
for (UIView *subview in self.subviews)
{
if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"])
{
// hide original button
[[subview.subviews objectAtIndex:0] setHidden:YES];
// show my custom button
[self.deleteButton setHidden:NO];
}
}
} else {
for (UIView *subview in self.subviews) {
for (UIView *subview2 in subview.subviews) {
if ([NSStringFromClass([subview2 class]) rangeOfString:@"Delete"].location != NSNotFound) {
// hide original button
[subview2 setHidden:YES];
// show my custom button
[self.deleteButton setHidden:NO];
}
}
}
}
} else {
// hide my custom button otherwise
[self.deleteButton setHidden:YES];
}
}
그리고 추가하는 것을 잊지 마십시오 :
[cell.deleteButton addTarget:self action:@selector(deleteEntryAtIndexPath:) forControlEvents:UIControlEventTouchUpInside];
안에 cellForRowAtIndexPath
, 삭제 버튼을 클릭 할 때 원하는 것을 추가 할 수 있습니다. 내 결과는 다음과 같습니다.
Luvieere의 답변에 대해 언급 한 바와 같이 의도 된 목록 다이빙 액션에 대한 시스템 전체 표준은 스 와이프 제스처가 아니라 세부 사항 공급 (파란색 서클 레드 화살표) 셀 액세서리를 사용하는 것입니다.
즉,이를 위해 스 와이프 동작을 여전히 사용하려면 트윗과 같이 스 와이프 제스처를 수동으로 가로 채고 완전히 재 형성하지 않고 자신의 버튼을 제공 할 수있는 방법이 없습니다.