2017-10-28 7 views
1

동적으로 채우는 테이블 뷰가 있습니다. 내 cellForRowAtIndexPath 방법에 대한 코드는 다음과 같습니다 MYTapGestureRecognizer 홀수 찾고클릭하면 Tableview에서 UIImageView의 이미지를 변경하는 방법

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

UIImage * ImageFavorited = [UIImage imageNamed:@"Favorited"]; 

     UIImageView *ImageViewFavorited = (UIImageView *)[cell viewWithTag:7]; 
     ImageViewFavorited.image =ImageFavorited; 

     ImageViewFavorited.userInteractionEnabled = YES; 


     NSString *uiid = [[collectionFromData valueForKey:@"id"] objectAtIndex:(indexPath.row)]; 
     MYTapGestureRecognizer *tapped = [[MYTapGestureRecognizer alloc] initWithTarget:self action:@selector(myFunction:) ]; 
     tapped.data = uiid; 
     tapped.numberOfTapsRequired = 1; 
     [ImageViewFavorited addGestureRecognizer:tapped]; 

} 

나는, 나 알고있다 알고있다, 나는 실제로 UITapGestureRecognizer 그래서 난 그것으로 데이터를 전달할 수 확장. (감사합니다 StackOverFlow 사용자), 그래서 내 문제는 클릭 한 UIImageview 사용자가 클릭 한 후 이미지를 변경하려면. 현재로서는 myfunction 기능에서 클릭을 감지하지만 이미지를 변경하는 방법을 찾지 못하는 것 같습니다.

myfunction의 코드는 다음과 같습니다 귀하의 경우 이후 해당 뷰 속성을 변경할 수와 그 다음

[(UIGestureRecognizer *)sender view] 

:

-(void)myFunction :(id) sender 
{ 
    MYTapGestureRecognizer *tap = (MYTapGestureRecognizer *)sender; 

    NSLog(@"data is = %@", tap.data); 
} 

답변

0

발신자보기를 얻을 수있는하여 myFunction에 다음을 추가 그것은 UIImageView, 그냥 UIImageView 같이 캐스팅 및 이미지 속성을 변경하십시오.

완성 된 솔루션은 다음과 같습니다이 상황에 대한

[(UIImageView*) [(UIGestureRecognizer *)sender view]] setImage:[UIImage imageNamed:”blah”]] 
+0

철저히 정직하게 말씀 드리 자면, "내능"기능에 두 번째 코드 줄을 추가했는데 작동하지 않습니다. – samouray

+0

"*"표시가 깜박입니다. UIImageView 캐스트, 편집 했으므로 지금 작동해야합니다. –

+0

위의 내용은 도청 된 뷰 (이 경우 UIImageView)를 얻는 것이므로 setImage를 호출 할 수 있도록 UIImageView로 캐스팅합니다. imageNamed : 함수에 유효한 이미지 이름이 있는지 확인하십시오. 그러면 제대로 작동합니다. –

0

모범 사례.

UIImage 대신 viewControllerUIButton을 사용하고 작업을 바인딩하십시오. 버튼 이미지를 defaultSelected 상태 스토리 보드로 설정하거나 코드에 따라 설정하십시오. buttonAction

sender.selected = !sender.selected; 
tableView.raeloadData(); 

그게 모두에서

. 여전히 문제가있는 경우 나에게 무릎을 꿇게하십시오.