2013-03-30 2 views
1

나는 TableViewController를 가지고 있으며 storyboard.I를 사용하여 사용자 정의 uitableview 셀을 설계했습니다. 식별자와 태그를 내 tableview 셀의 모든 서브 뷰에 올바르게 설정했습니다 (처음으로이 작업을 수행하지 않고 일반적으로 일이 쉽게 이루어졌다).UITableViewCell 서브 뷰가 초기화되지 않음

하지만 지금은 내 tableview 컨트롤러에서 이상한 것들을 관찰하고 있습니다. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 방법에서, 나는 적당한 세포를 얻고있다. 태그를 사용하여 하위보기에 액세스 할 수도 있습니다. 그러나 하위 뷰의 프레임 속성에 액세스하려고하면 값이 0이됩니다.

나중에 다른 메서드에서 하위 뷰가 배치됩니다. 이것이 처음 보는 순간입니다. 누군가 전에 이것을 경험 했습니까?

+0

참조 용 코드를 추가하십시오. – NANNAV

답변

2

tableView:willDisplayCell:forRowAtIndexPath:을 구현하고 거기에서 하위보기의 프레임을 확인하십시오. 그들은 거기에서 괜찮습니까? 그러면 모든 것이 잘됩니다.

3

UITableViewCell 'layoutSubviews'메서드를 호출 한 후에 만 ​​셀의 하위 프레임을 준비 할 수 있습니다. 당신이이 프레임을 수정해야하는 경우에, 당신은있는 UITableViewCell의 서브 클래스를 작성해야합니다 그리고 당신은, 당신은 간단하게 확인 할 수있는 프레임 값에 액세스해야하고 변경을 할 필요가없는 경우 layoutSubviews

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    // modify frames here 
} 

를 구현 tableView:willDisplayCell:forRowAtIndexPath: 방법.

+0

글쎄, 다른 @Matt! 그냥 분명히,'layoutSubviews'는'tableView : willDisplayCell : forRowAtIndexPath :'보다 늦었다 고 지적해야합니다. – matt

+0

@matt 감사합니다! :) – Matt

+0

'tableView : willDisplayCell : forRowAtIndexPath : '를 확인했는데 프레임 치수가 여전히 0 인 경우도 있습니다. 프레임을 수정할 필요는 없지만이 프레임 크기를 기반으로 다른 뷰를 생성합니다. 나는 그것을 Subclass 할 것입니다. 하지만 이상한 것은 비슷한 스토리가있는 내 스토리 보드에 또 다른 테이블 뷰가 있고 하위 뷰가 cellForIndexPath 메서드 자체에서 초기화되는 것입니다. 감사합니다 매트 (s .. :)) 도움을! – user2226275

관련 문제