2010-06-15 6 views
1

현재 각 셀에 4 개의 UIButton이 포함 된 UITableView이 있습니다. 온라인에서 다운로드 한 사진으로 각 버튼의 이미지를 배치하고 있습니다. 이미지 다운로드가 완료되면 버튼이 희미 해 지도록하고 싶습니다. 내가 viewDidLoad에서 움직일 수 있다는 것을 알고 있지만, cellForRowAtIndex 함수로 이미지를 할당합니다. UIButton 이미지를 업데이트 할 때 나중에 UIButton에 애니메이션을 적용하려면 어떻게해야합니까?UITableView에서 UIButton을 어떻게 애니메이트합니까?

답변

1

아마도 UIButton에 태그를 지정해야합니다. 네 개의 버튼이있을 때 쉽게 읽을 수 있도록 정수 태그를 정의 할 수도 있습니다.

#define CELL_BUTTON_ONE 9999 

당신은 첫 번째 버튼이 태그를 할당 빌드 할 때 :

[myButton setTag:CELL_BUTTON_ONE]; 
[cell addSubView:myButton]; 

어디서 모르거나 당신은에 당신이 무엇을해야 말한다 조금 힘든 이미지를로드하는 방법입니다. 아이디어는 이미지로 대체하려는 버튼을 소유하고있는 UITableViewCell에 대한 참조를 얻는 것입니다. 현재 참조 할 수있는 셀의 위치는 다음과 같습니다.

UIButton *buttonOne = [cell viewWithTag:CELL_BUTTON_ONE]; 
[button setImage:loadedImage]; 
+0

+1 올바른 방법입니다. 하지만, 그렇게해서는 안됩니다 [cell.contentView addSubview : myButton]? 그리고 나는 그것이 [buttonOne setImage : loadedImage forState : xxxxx]라고 생각합니다. – David

+0

당신이 맞다고 생각합니다. David :) 저는 보통 다른 셀 뷰를 사용하지 않기 위해 보통 맞춤형 셀을 사용합니다. – RickiG

0

-cellForRowAtIndexPath에서 수행하십시오. 이미지 다운로드가 완료되면 테이블 뷰에서 -reloadData를 호출합니다. 셀의 각 UIButton에 대한 콘센트를 만들거나 태그를 할당 할 수 있습니다. IB에서 알파 값을 0.0으로 설정하십시오. 그런 다음 -cellForRowAtIndexPath가 호출되면 해당 행/버튼의 이미지를 사용할 수있는 경우 해당 이미지를 설정 한 다음 UIView 애니메이션 블록에서 -setAlpha : 1.0을 호출합니다. 같은 : 내가 생각할 수있는

- (UITableViewCell*)tableView:(UITableView*)tv 
     cellForRowAtIndexPath:(NSIndexPath*)indexPath 
{ 
    // get a reference to your cell... 

    // get reference to the UIButton in the cell 
    UIButton *button = [cell viewWithTag:tagForButton]; 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.75]; 
    [button setAlpha:1.0f]; 
    [UIView commitAnimations]; 
} 

유일한 문제는 인해 세포를 다시 사용하기 위해 데이터를 기반으로 주어진 indexPath의 알파 값을 추적 할 필요가 있다는 것입니다. 따라서 현재 셀의 button1에 알파가 1.0으로 설정되어있는 경우 다시 애니메이션을 적용하고 싶지는 않지만 아직 설정되지 않은 다른 버튼의 알파에 애니메이션을 적용해야합니다. 이 이미지 가시성 상태는 추적해야 할 것입니다. 그렇게하는 것이 어렵지는 않지만 단순히 알파를 설정하는 것 이상의 의미가 있습니다. 설명이 필요한 경우 알려주십시오.

관련 문제