2014-09-06 5 views
0

사용하여 animation이있는 tableViewCell에서 셀을 이동하는 방법 objective-C스 와이프 동작

행이있는 tableView가 있습니다. 나는 그 사용자가 조금씩 옆으로 움직일 수 있고 추가 행동이 그에게 보여 지길 바란다.

이 이루어졌다 무엇 :

현재 XIB 파일의 XIB 파일 및 셀에 따로 테이블을 만듭니다. 세포가 매우 간단합니다 enter image description here

가고 싶습니다 viewWIthLabel으로 이동하고 싶습니다.

- (IBAction)swipeLeft:(id)sender{ 
NSLog(@"swipeL"); 
[UIView animateWithDuration:0.5 animations:^{ 
    self.viewWIthLabel.frame = CGRectMake(-100, 0, self.viewWIthLabel.frame.size.width, self.viewWIthLabel.frame.size.height); 
} ]; 
} 

- (IBAction)swipeRight:(id)sender{ 
NSLog(@"swipeR"); 
[UIView animateWithDuration:.5 animations:^{ 
    self.viewWIthLabel.frame = CGRectMake(0, 0, self.viewWIthLabel.frame.size.width, self.viewWIthLabel.frame.size.height); 
}]; 
} 

그래서 아이디어는 셀을 슬쩍하고 숨겨진 버튼을 보여주기 위해 약간의 거리를 애니메이션으로 이동하기 : 애니메이션을 사용하기위한 세포 클래스 파일에서 나는 다음 코드를

- (void)awakeFromNib 
{ 
    UISwipeGestureRecognizer * leftGestrudeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft:)]; 
leftGestrudeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft; 
    UISwipeGestureRecognizer * rightGestrudeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)]; 
rightGestrudeRecognizer.direction = UISwipeGestureRecognizerDirectionRight; 
[self addGestureRecognizer:rightGestrudeRecognizer]; 
[self addGestureRecognizer:leftGestrudeRecognizer]; 
} 

과 행동을 사용합니다. 이 코드의

결과 - 내가 원하는 almoust 같은 :

enter image description hereenter image description here

하지만 당신은있는 tableView 당신이 (스크롤 속도에 따라) 임의의 "슬쩍 세포"의 중복을 얻을 수있는 위치를 이동하기 시작하면 :

enter image description here

이 일어난 이유는 어떤 생각?

답변

2

– tableView:cellForRowAtIndexPath:에서 셀의 스 와이프 된 상태를 지우거나 재설정해야 할 수 있습니다. 세포가 재사용되기 때문에 (나는 tableview의 좋은 성능이 요구되는 것처럼 당신이하고 있다고 가정하고있다). 이 같은 아마 뭔가 - 당신이 말처럼 노력하지만,이 경우에, 당신이 뿌린 스크롤 할 때, 돌아보다, 모든 세포가 당신이 그것을 아래로 스크롤 슬쩍 경우 의미 "상태"를 말하고 있습니다 재설정

self.viewWIthLabel.frame = CGRectMake(0, 0, self.viewWIthLabel.frame.size.width, self.viewWIthLabel.frame.size.height); 
+0

뒤쪽보다 - 다시 문지르지 않으면 안됩니다. 현재 스왑 된 셀을 저장할 수 있습니까? – gbk

+0

'tableview' 데이터를 구성하는 배열에있는 데이터 요소의 속성에 상태 (BOOL로 스 와이프 메뉴가 표시되는지 여부를 나타냄)를 설정함으로써 코드를 작성해야합니다. –

+0

예, 적어도 재사용 된 셀을 "정상"위치로 복원 한 다음 해당 행에 대한 BOOL과 같은 상태 변수를 기반으로 프레임을 다시 이동할 수 있습니다. – auspicious99

관련 문제