2017-03-01 16 views
0

스택보기가 포함 된 표보기 셀이 있습니다. 몇 가지 요구 사항이 충족되면 스택보기는 셀에만 있어야합니다. 그렇지 않으면 셀의 높이를 줄여야합니다. .isHidden을 사용하면 높이가 그대로 유지됩니다. 하지만 스택보기를 해당 셀에서 제거해야합니다.스위프트 3 표보기 - 일부 셀에서 스택보기 제거

여기에 내 코드 : 당신이 볼 수 있듯이

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "RumCell", for: indexPath) as! RumCell 

    let currentRum: Rum 
    currentRum = rumList[indexPath.row] 

    cell.rum = currentRum 

    if (cell.rum?.clubRatingJuicy == 0) && (cell.rum?.clubRatingGasy == 0) && (cell.rum?.clubRatingSpicy == 0) && (cell.rum?.clubRatingSweet == 0) { 
     cell.frame.size.height -= 76 
    } 

    return cell 
} 

, 나는 셀 높이를 줄이기 위해 노력했지만이 작동하지 않습니다. 나는 또한 이것을 시도, 어떤 작동하지 않습니다 :

if (cell.rum?.clubRatingJuicy == 0) && (cell.rum?.clubRatingGasy == 0) && (cell.rum?.clubRatingSpicy == 0) && (cell.rum?.clubRatingSweet == 0) { 
     cell.tastStack.removeFromSuperview() 
    } 

아무도 이것을하는 방법을 말해 줄 수 있습니까?

+0

당신이 self.tableView.beginUpdates()'와'self.tableView.endUpdates()'추가 할 수있다 'AF 당신은 스택보기를 제거하고 새로운 높이를 계산합니까? – ronatory

답변

0

당신은 모두가 (당신이 rum VAR을 설정할 수 있습니다) 프로토콜 RumCellProtocol

protocol RumCellProtocol { 
    func config(rum: Rum) 
} 
준수 (stackview와)과 RumCellDetailed (stackview없이) 다른 세포 프로토 타입 RumCell를 사용해야합니다 구현할 수 있습니다

이 코드 :

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    var cellIdentifier = "RumCellDetailed" 

    if (cell.rum?.clubRatingJuicy == 0) && (cell.rum?.clubRatingGasy == 0) && (cell.rum?.clubRatingSpicy == 0) && (cell.rum?.clubRatingSweet == 0) { 
     cellIdentifier = "RumCell" 
    } 


    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! RumCellProtocol 

    let currentRum: Rum 
    currentRum = rumList[indexPath.row] 

    cell.config(rum: currentRum) 

    return cell 
} 
0

시도의 동적 높이 코드, 그리고 당신은 세포 프레임을 설정해서는 안

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 
    return UITableViewAutomaticDimension 
} 
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 
    return 100.0 
} 
0

있는 tableView 셀에 수정 높이가없는 제약 조건을 부여합니다. TableView가 작동하는 방식이 아닙니다. 셀 높이가 동적이면 @Theorist가 정확합니다. 그렇지 않은 경우

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath:  NSIndexPath) -> CGFloat 
{ 
    if let cell = tableView.cellForRowAtIndexPath(indexPath), let rum = cell.rum, rum.clubRatingJuicy == 0 && rum.clubRatingGasy == 0 && rum.clubRatingSpicy == 0 && rum.clubRatingSweet == 0 { 
    return {no stackview height} //whatever the height should be for no stackview 
} 
    return {normal height} //whatever your value is 
}