문제

나는 겪었다 이 질문 다음 코드를 보여줍니다.

-(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, 삭제 버튼을 클릭 할 때 원하는 것을 추가 할 수 있습니다. 내 결과는 다음과 같습니다.

enter image description here

Luvieere의 답변에 대해 언급 한 바와 같이 의도 된 목록 다이빙 액션에 대한 시스템 전체 표준은 스 와이프 제스처가 아니라 세부 사항 공급 (파란색 서클 레드 화살표) 셀 액세서리를 사용하는 것입니다.

즉,이를 위해 스 와이프 동작을 여전히 사용하려면 트윗과 같이 스 와이프 제스처를 수동으로 가로 채고 완전히 재 형성하지 않고 자신의 버튼을 제공 할 수있는 방법이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top