2017-05-17 22 views
1

일부 제품을 보여주기위한 테이블 뷰가 있습니다. 제품에 할인이 있거나 없을 수 있습니다. 할인 (최대 2 개)은 스택 뷰로 그룹화되므로 코드에서 숨기거나 표시합니다. 제품에 할인이있는 경우 스택보기.Stackview는 셀을 삽입 한 후 다시 사용할 수있는 테이블 뷰 셀에 숨겨져 있습니다.

새 셀을 삽입 할 때 문제가 발생합니다. 갑자기 할인 된 제품을 보유한 셀에 스택보기가 표시되지 않습니다.

난,

하지만 사용할 때 를 삽입 할 때 문제가 발생
tableView.dequeueReusableCell(withIdentifier:, forIndexPath) 

,

tableView.dequeueReusableCell(withIdentifier:) 

문제 없어 삽입시, I 사용 , 디큐 셀의 2 가지 방법으로 시도 그러나 셀을 보이지 않게하고 뒤로 스크롤 할 때 아래로 스크롤하면 다시 발생합니다.

let basicCell = tableView.dequeueReusableCell(withIdentifier: "basicCell") as! BasicCell 
     if product.discounts{ 
      basicCell.discountType = DiscountType.lineDiscount 
     }else{ 
      basicCell.discountType = DiscountType.none 
     } 
     basicCell.configureCellType() 

     return basicCell 

그리고 configureCellType의 코드() :

func configureCellType(){ 
    switch discountType! { 
    case .none: 
     discountStackView.isHidden = true 
    case .lineDiscount: 
     groupDiscountView.isHidden = true 
    case .groupDiscount: 
     lineDiscountView.isHidden = true 
    case .bothDiscounts: break 
    } 
} 
+0

'cellForRow' 구현을 보여주십시오. – shallowThought

+0

호출은 기본 셀을 반환하기 전에 –

+0

@Umer이 cell.setNeedsLayout(), cell.layoutIfNeeded()는이 문제가있을 수있는 사람들을위한 – user3407533

답변

0

잘에 문제가 configureCellType() 기능에 실제로

은 행의 셀의 코드입니다. 각각의 경우 스택보기가 숨어 있습니다. 확인해보십시오.

+0

사실, 스택보기를 숨기려면 자루보기 내의 다른보기가 있습니다. – user3407533

+0

감사합니다. 귀하의 의견은 그것을 해결하기위한 아이디어를 준 것입니다. – user3407533

+0

실제로 스택보기는 내부보기로 콘텐츠 높이를 결정합니다. , 만약 당신이 그들을 완전히 숨기면, 그것은 보이지 않을 것입니다. 나는 당신이 그것을 가지고 있기를 바랍니다. –