2013-01-16 2 views
0

많은 스토리 아웃이 스토리 보드 파일에 연결된 ItemDetailCell으로 서브 클래스 화 된 사용자 정의 UITableViewCell이 있습니다. 그 중에서도 UIView 서브 클래스는 PriorityView이며 nib 파일의 UIView (priorityStatusView)에 하나의 콘센트가 있습니다.사용자 정의 UIView의 사용자 정의 UIView

@property (weak, nonatomic) IBOutlet PriorityView *redPriorityView; 

nib 파일 (PriorityView.xib)에서 File 's Owner Custom Class를 PriorityView에 연결했습니다. PriorityView.m에서 나는 사용 drawRect에서 nib 파일을로드하고 있습니다 :에서

NSArray *array = [[NSBundle mainBundle] loadNibNamed:@"PriorityView" owner:self options:nil]; 
[self addSubview:[array objectAtIndex:0]]; 

을 내 테이블 뷰 컨트롤러의 cellForRowAtIndexPath 내가 redPriorityView.priorityStatusView의 배경색을 설정하려고하지만, 처음에는 drawRect 그렇게 펜촉이로드를 호출하고 있습니다. 펜촉을 넣기 위해 initWithFrame을 사용하지 않는 이유는 펜촉을 넣지 않는 것 이외에도 PriorityView을 무효화하는 것입니다. 보기에 이미 IBOutlet이로드되어 있기 때문에이 문제가 발생했습니다. 내가 전화했기 때문에 그것이 null이라는 것을 안다.

NSLog(@"%@, %@", detailCell.redPriorityView, detailCell.redPriorityView.priorityStatusView); 

과 둘 다 반환 null. 그러나을 사용하여 펜촉을로드하면 두 로그가 모두 null이 아닙니다.

detailCell.redPriorityView.priorityStatusView.backgroundColor = [UIColor yellowColor]; 

가 나는 또한 아무 소용 setBackgroundColor를 사용하여 시도했다 : 나는 지금 데 유일한 문제는 배경색이 사용 변경되지 것입니다. 실제로, redPriorityView 또는 redPriorityView.priorityStatusView의 속성 중 아무 것도 나를 위해 바뀌지 않는 것 같습니다. 배경색은 단지 예일뿐입니다.

오랫동안 사용해 줘서 죄송 합니다만, 나는이 작업을 어렵게하고 있습니다. 어떤 도움을 주셔서 미리 감사드립니다!

내가 ItemDetailCell의 방법을 사용하여 redPriorityView의 속성을 설정하고 cellForRowAtIndexPath 통해 호출하지만 방법에 NSLog라는 경우에도 속성이 변경되지 않는 시도

편집. 보기가 PriorityView 파일에 연결된 방식에 문제가있을 수 있습니다.

+0

여기서 뭘하고 있는지 정확하게 말하기는 어렵지만 drawRect를 사용하는 것은 길은 아닙니다. 펜촉에서 나오는 것들을 위해서, 당신은 initWithFrame보다는 initWithCoder를 사용하고 싶습니다. 좀 더 기본적인 질문은, 왜 당신이 우선 ItemDetailCell 내부에 priorityStatusView를 생성하는 대신에 별도의 nib 파일을 사용하고 있는가하는 것입니다. – rdelmar

+0

@rdelmar detailCell에서 뷰를 세 번 사용하고 있습니다. 마지막으로 서브 뷰와 탭 제스처 인식기를 사용할 것이므로 서브 클래 싱하면 UIView의 모든 기능을 제어하는 ​​것이 더 쉬울 것이라고 생각했습니다. –

+0

@rdelmar 또한 프로토 타입 셀에 제스처 인식기를 추가 할 수 없습니다. 그래서 사용자 정의보기를 사용하는 것이 나의 유일한 선택 인 것 같습니다. –

답변

0

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 메서드를 구현하고 배경색을 설정해보십시오. 희망이 도움이!

+0

왜 이것을'cellForRowAtIndexPath' 대신에 사용합니까? –

+0

나는 그것을 사용하려했지만 불행히도 아무런 차이가 없다. –

+0

"테이블 뷰는 셀을 사용하여 행을 그리기 전에 대리인에게이 메시지를 전송하므로 표시되기 전에 대리인이 셀 개체를 사용자 지정할 수 있습니다.이 메서드는 대리자에게 이전에 설정된 상태 기반 속성을 무시할 수있는 기회를 제공합니다 선택 및 배경색과 같은 표보기로. " – Levi

0

접근자를 강하게 설정해보십시오. 어쩌면 ...

관련 문제