2016-08-22 2 views
1

그래서 모든 셀의 최대 높이가 UITableView의 높이의 2/3보다 작거나 같도록 제약 조건을 추가하고 싶습니다.UITableViewCell과 UITableView 사이에 NSLayoutContraint를 추가하십시오.

어떻게하면됩니까?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell에 제약 조건을 추가하는 것은 셀이 UITableView에 없기 때문에 선택 사항이 아니므로 셀에 공통적 인 수퍼 뷰가 없다고 불평합니다.

기본적으로 내 UITableViewCell과 내 UITableViewNSLayoutContraint으로 어떻게 관련 지을 수 있습니까?

+0

여기서 제약 조건을 사용해야합니까, heightForRowAtIndexPath 내에서 셀 높이를 계산할 수 없습니까? 예 : return tableView.frame.size.height * 2/3 –

답변

2

음, 그렇게 할 수는 없습니다. 당신이 할 수있는 것은 tableview의 높이를 얻은 다음 그 양의 셀에 높이 제한을 추가하는 것입니다. 따라서 인터페이스 빌더에서 셀의 높이 제약 조건을 추가하고 편리한 값으로 설정하십시오. (테이블에 무엇이 있는지 보려면 코드에서 업데이트됩니다). 그런 다음 해당 제약 조건에 대한 코드에 참조를 추가합니다. 그런 다음 제약 조건의 값을 업데이트 할 때 :

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cellidentifier", forIndexPath: indexPath) as! YourCustomCell 
    cell.heightConstraint.constant = 2.0 * tableview.frame.size.height/3.0 
} 

동적 크기의 셀을 사용하는 경우입니다. 그렇지 않으면 그냥 func tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat을 무시하고 원하는 크기로 되돌릴 수 있습니다.

+0

내가 찾던 것만 큼 우아하지는 않지만 훌륭한 아이디어였습니다. 어쨌든,'cell.heightContraint'가 그 시간에'nil'이기 때문에 작동하지 않습니다. –

+0

그렇지 않아야합니다. 그것은 단지 정규 콘센트입니다. 라벨이나 뷰 아웃렛이 작동하는 것과 같은 방식으로 작동해야합니다. 올바른 셀을 사용하고 구속이 활성화되어 있는지 확인하십시오. 비활성화하면 '강'으로 지정하지 않으면 할당이 해제됩니다. – Jelly

+0

은 이해가되지 않습니다. 왜 active를 false로 설정하면 할당이 해제됩니까? –

관련 문제