2012-01-16 2 views
2

UITableViewCell에서 UIButton을 사용하고 있는데,이 버튼은 골드 스타와 선택되지 않은 회색 별으로 선택할 수 있습니다 (아래 그림 참조).UITableViewCell을 선택하면 UIButton이 덮여집니다.

enter image description here

문제는 셀이 선택된 어느 경우없이 버튼이 선택된 경우의 여부가 그레이 색으로 설정한다는 것이다 (이 그레이 색상의 선택되지 않은 모드의 회색 다르다 별). 나는 왜 이런 일이 일어나는지를 알아 내려고 노력했지만 운이 없었습니다.

여기 enter image description here

세포의 구현이며,

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

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];  
UIButton *button = [[UIButton buttonWithType:UIButtonTypeCustom]retain]; 

//set the background of the cells 
cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: @"cellBackground.png"]]; 
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellselected2.png"]]; 

// set the button content 
[button setImage:[UIImage imageNamed:@"star.png" ] forState:UIControlStateNormal]; 
[button setImage:[UIImage imageNamed:@"starSelected.png"] forState:UIControlStateSelected]; 
[button addTarget:self action:@selector(selectedButton:) forControlEvents:UIControlEventTouchUpInside]; 
[button setFrame:CGRectMake(280, 10, 24, 24)]; 

[cell addSubview:button]; 

return cell; 
} 

또한 셀 버튼이 완전히 사라지고 선택된 경우 I 버튼을 누를 때!

고마워,

답변

6

나는 문제가 무엇인지 생각. 문제는 셀을 선택하면 셀의 UIButton이 "강조 표시된 상태"로 이동한다는 것입니다. 버튼의 강조 표시된 상태에 사용되도록 할당 된 이미지가 없으면 내 모양처럼 보입니다.

그래서 난 그냥

[button setImage:[UIImage imageNamed:@"starSelected.png"] forState:UIControlStateHighlighted]; 

희망이 같은 문제 :

+0

질문에 대한 답변을 수락하는 것이 좋습니다. –

1

버튼을 contentView 대신 셀 프레임에 추가합니다.

UITableViewCell은 셀을 선택한 경우에만이 속성 값을 하위보기로 추가합니다. 선택한 배경보기가 nil이 아니거나 다른 모든보기 뒤에있는 경우 배경보기 (backgroundView) 바로 위에있는 하위보기로 추가합니다. UITableViewCell은 백그라운드 뷰를 다른 모든 뷰의 하위 뷰로 추가하고 현재 프레임 위치를 사용합니다.

[cell.contentView addSubview:favButton]; 

[cell addSubview:favButton]; 

교체 그리고 그것을 해결해야한다.

UITableViewCell 개체의 콘텐츠보기는 셀에 표시되는 콘텐츠의 기본 수퍼 뷰입니다. 추가보기를 추가하는 것만으로 셀을 사용자 정의하려면 셀을 편집 모드로 이동하거나 편집 모드에서 전환 할 때 적절히 배치되도록보기를 추가해야합니다.

그것은

가 참조 AppleDocs ^^ 모든입니다 : http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html

+0

불행히도 이것으로 해결하지 못했습니다. – Mona

+1

@Mona [cell bringSubviewToFront : button]을 추가하면 어떻게됩니까? 선택 후. 또는 셀 [셀 sendSubviewToBack : cell.selectedBackground]; ? –

+0

작동하지 않았습니다. 감사합니다. – Mona

1

당신을 직면 다른 사람을 도움의있는 UIButton에 사용되는 상태를 강조하고 싶은 이미지를 추가하여 고정 강조 표시된 상태의 이미지를 확실히 설정할 수 있습니다. 다른 옵션으로 UIControlStateNormalUIControlStateHighlighted에 동일한 이미지를 사용하려는 경우 button.adjustsImageWhenHighlighted = NO, 기본값은 YES입니다.

+0

이것은 나를 위해 작동하지 않았다. 이미지가 없습니다 (배경색 만). 셀을 선택하면 버튼도 선택됩니다. contentView에 버튼을 추가했습니다. – Darren

관련 문제