2016-06-18 2 views
4

동적 표보기 셀이있는 tableview (B)가있는 모든 사용자 정의 셀에 tableview (A)가 있습니다.동적 셀의 표보기 설정 표보기 높이 구속에 대한 콘텐츠 높이 ios

at tableview (A) cellForRowAtIndex.

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

    MainMessageTVCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MsgMainCell"]; 

     cell.selectionStyle = UITableViewCellSelectionStyleNone; 

     NSInteger index = indexPath.row; 

     MessageMain *result = tableData[index]; 

     cell.dateLabelTC.text = [NSString stringWithFormat:@"Date : %@",result.createdTime]; 
     cell.subjectLabelTC.text = [NSString stringWithFormat:@"Subject : %@",result.subject]; 

     NSArray *arrList = result.messageList; 
     [cell setupTableData:(NSMutableArray *)arrList]; 

     [cell setNeedsUpdateConstraints]; 
} 

테이블 뷰 (A)의 사용자 정의 셀 재로드 테이블 뷰 (B)에서.

-(void)setupTableData:(NSMutableArray *)tableData{ 

    _tableData = tableData; 

    [self.tableView reloadData]; 
} 
-(void)updateConstraints{ 
    [super updateConstraints]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.tableView layoutIfNeeded]; 
     CGFloat height = self.tableView.contentSize.height;//+1000; 
     tableBHeightConstraints.constant = height; 
    }); 
} 

tableBHeightConstraints의 tableview는 (A)에 테이블 뷰 (B)의 셀의 아이의 높이를 제한한다. tableBHeightConstraints.constant가 모든 계산 제약 조건에서 올바른 값을 가져 오지 않습니다.

동적 테이블 셀의 높이를 설정 한 후 tableView.contentSize.height를 정확히 얻는 가장 좋은 장소 또는 방법은 무엇입니까?

이있는 tableview (A)이다의 셀

제발 도와주세요 사람의 휴대 enter image description here

enter image description here

이 (B)의 tableview이다 '.

답변

1

이것을 시도 :

가 jQuery과

_tableViewHieghtConstraint.constant * = 행의 수 배열의 높이의 높이의 제약을 받아.

in table 방식 번호 방법.

+0

동적 셀이 있고 머리글과 바닥 글을 가지고 있기 때문에 전체 테이블 내용 높이를 얻는 방법. –

0

그것은 단순히 동일한 높이로 제약 조건을 설정하는 것이 좋습니다 :

NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(tableB); 
[cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V|[tableB|" options:0 metrics:0 views:viewsDictionary]; 

가 그런 마법은 그 자체로 발생한다 : 시각적 인 제약으로

tableA_cell.contentView height = TableB height 

는이 같은 것입니다. 당신이 TableB의를 변경하는 경우

, 그냥 세포

+0

t는 단순히 같은 높이로 제약 조건을 설정하는 것이 좋습니다 : tableA_cell.contentView height = TableB height 좋은 생각이지만 어떻게 할 수 있습니까? 나에게 아이디어를 주시겠습니까? 나는 제약 조건을 사용하고 있습니다. 그리고 tableviewB의 높이를 설정하는 가장 좋은 곳은 무엇입니까 –

+0

업데이트 된 답변보기 귀하의 질문에이 코드에 대한 답변이 충분하지 않습니다. tableB를 만들거나 제약 조건을 설정하는 코드는 없습니다. – markt

+0

이제 첨부 된 이미지의 모든 제약 조건을 볼 수 있습니다. –

4

당신에 다음 코드를 추가의 viewDidLoad 방법이다의 자동 높이를 업데이트 할 테이블 A에

[self.tableView beginUpdates] 
[self.tableView endUpdates] 

를 호출합니다.

self.tableView.rowHeight = UITableViewAutomaticDimension; 
    [self.tableView setEstimatedRowHeight:85.0]; 

또한

- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 100; 
} 

할당 heightForRowAtIndexPath.The 방법에 대한 자동 측정이 높이가 한 행에 사용하기위한 위임 요청은 estimatedHeightForRowAtIndexPath 수단을 포함하고 다음과 같이 추정 행 높이를 반환 지정된 위치.테이블 행이 동적 높이로 들어

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return UITableViewAutomaticDimension; 
} 

참고

는 내용 없음 내 레이블은 축소하거나 내용에 따라 성장할 수 있도록 상단과 하단에 고정되어야한다. 어려움에 처한 경우에 대비하여 나를 업데이트하십시오.

+0

나는 이것을 이미 viewA와 tableviewB에 대한 코드로 작성했다. tableviewB의 높이 표시는 셀 높이가 u로 증가함에 따라 데이터 피드로 인해 tableviewA 셀 높이도 증가합니다. –

+0

레이블에 설정된 텍스트로 인해 tableviewB의 셀 높이가 증가하면 –

+0

을 더 설명 할 수 있습니까 (마지막 이미지 첨부 참조). tableviewB 높이가 증가해야합니다. 그것은 tableviewA의 셀 안에 있으므로 tableviewA의 셀도 증가해야합니다. 그것의 둥지 테이블보기는 다른 tableview의 셀에 있습니다. –

0

변경 사항을 -(void) updateConstraints에서 -(void) viewDidLayoutSubviews으로 옮깁니다.

-(void)viewDidLayoutSubviews{ 
[super viewDidLayoutSubviews]; 

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.tableView layoutIfNeeded]; 
    CGFloat height = self.tableView.contentSize.height;//+1000; 
    tableBHeightConstraints.constant = height; 
}); 

}

+0

나는 시도했지만 정확한 높이를 얻지 못했습니다. –

1

이 후, 작업을 얻을 수없는 경우에 왜 다른 무언가를 시도하지. tableCell에 tableView를 고정시키려는 대신 두 개의 테이블을 하나로 관리하기 위해 데이터 소스를 수정하는 것이 가장 좋습니다. 그것은 아마도 더 효율적인 솔루션 일 것이고 단일 테이블로서 더 잘 작동해야하기 때문에 더 나은 해결책 일 것입니다.

그룹화 된 스타일을 사용하면 효과적으로 각 그룹은 머리글과 바닥 글이있는 개별 tableView입니다.

+0

나중에 선택의 여지가 없습니다. 네가 감사하다고 말했듯이 나는 끝내야 해. 그룹 스타일 문제 모든 그룹에서 배경 이미지를 설정할 수 없습니다. 모든 머리글, 셀 및 바닥 글에 이미지를 설정해야합니다. –