2012-12-14 2 views
0

내 디자이너는 다소 까다로운 디자인을 고안했습니다. tableview에서 그들은 나를
1) 사용자 정의 액세서리보기 - (UIButton 하위 뷰) - DONE
2) 탭 셀 액세서리에 사용자 정의 작업을 제공하지 않음 완료도청 된 내용을 기반으로 액세서리보기의 "강조 표시된"색상이 다릅니 까?

이제 까다로운 부분이 있습니다.


1) 셀을 탭하면 액세서리보기에 "highlightedBackground"가 표시됩니다.
2) 액세서리보기를 탭하면 액세서리보기 만 강조 표시되지만 "alternativeHighlightedBackground"로 강조 표시됩니다.

다시 말하면 accessoryView의 경우 전체 셀을 탭했는지 또는 액세서리보기 만 탭했는지에 따라 정상적인 배경과 두 개의 다른 강조 표시된 배경이 있습니다.

현재로서는 사용자 지정 액세서리 역할을하는 cellForRowAtIndexPath의 액세서리보기에 하위보기로 UIButton을 추가하고 있습니다. 분명히, 액세서리 뷰는 터치 이벤트를 버튼에 전달하고, 무엇이 탭되었는지에 관계없이 버튼이 동일한 배경으로 강조 표시됩니다. 현재 셀은 사용자 정의가 아니며, 일반적인 UITableViewCell 인스턴스입니다. SDK는 iOS5이지만, iOS6은 사용할 수 없습니다.

어떤 조언이 필요합니까?

답변

1

액세서리보기 경로를 포기하고 UITableViewCell의 하위 클래스를 만듭니다.

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    CGRect bounds = self.contentView.bounds; 

    CGFloat buttonOriginX = self.contentView.bounds.size.width - BUTTON_WIDTH - PAD; 
    CGFloat buttonOriginY = floorf((bounds.size.height - BUTTON_HEIGHT)/2.0)+1; 

    self.mybutton.frame = CGRectMake(buttonOriginX, buttonOriginY, BUTTON_WIDTH, BUTTON_HEIGHT); 
} 
: 간단하게 다음과 같습니다 뭔가 layoutSubviews을 한 후, 당신이 원하는 무엇을 적으로 버튼의 터치 업 작업을 설정 우선, init 함수에서 당신 버튼을 만드는 세포의 contentView에 하위 뷰로 추가

버튼이 셀 앞쪽에 닿으면 버튼이 가로 챕니다. 그런 다음 버튼을 터치 할 때 버튼이 표시되는 것을 완전히 제어 할 수 있습니다 (강조 상태 이미지 설정).

+0

나는 그것을 약간 실험했지만, 기본적으로 액세서리보기를 사용하는 데는 아무런 문제가 없습니다. 실제 문제는 세포가 도청 된 시점과 그렇지 않은 시점을 아는 것입니다. 이를 바탕으로 강조 표시된 배경을 두 가지 버전 중 하나로 설정해야합니다. 문제는이 방법을 찾을 수있는 신뢰할만한 방법이 없다는 것이고 다른 점은 셀이 목록에 다시 표시되면 배경을 기본값으로 다시 설정해야한다는 것입니다. –

+0

단추의 동작 방법에서 셀 배경을 원하는 색으로 설정하십시오. – kamprath

+0

배경을 전환하는 것은 문제가되지 않습니다. 나는 여러 가지면에서 그것을 할 수있다. 앞에서 언급했듯이 문제는 세포가 도청 된 시점과 액세서리 시점을 파악하는 것이 었습니다. 또한이 테이블 뷰를 스택에 푸시하거나 다른 뷰를 팝업 한 다음 다시 표시하면 적절한 배경이 다시 설정됩니다. 사용자 지정 셀에서 5 가지 메서드를 재정의했습니다. –

관련 문제