簡體   English   中英

隱藏視圖在旋轉時在自定義 UITableViewCell 中可見

[英]Hidden view is visible in custom UITableViewCell on rotate

我有一個 UITableView 和一個作為 NIB 實現的自定義 UITableViewCell。 自定義單元格包括 UILabel 和 UIView(又是新的 email / 消息指示器)。 cellForRowAt中,我將標簽設置為一些文本並隱藏 UIView 但將其isHidden屬性設置為 false。 結果是一個行列表,其中只有一行文本。 但是,如果我將屏幕旋轉到橫向,然后再轉回縱向,則在橫向中不可見但現在縱向顯示的幾行 UIView 可見。 如果這些行從視圖中滾動並返回到視圖中,則 UIView 將按預期隱藏。 我可以在一個非常簡單的示例中重新創建此問題,其中

UIViewController UITableView 前導=0,尾隨=0,頂部=0,底部=0

UITableViewCell UIStackView - 軸=水平,對齊=中心,分布=填充,前導=0,尾隨=0,頂部=0,底部=0 UILabel UIView - 寬度=10,高度=10

對這種行為的原因有任何想法嗎? 我嘗試在cellForRowAt中設置cell.layoutIfNeeded() ,但沒有成功。

在此處輸入圖像描述

在此處輸入圖像描述

在此處輸入圖像描述

根據要求附上cellForRowAt代碼。

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

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

    cell.titleLabel.text = dataSource[indexPath.row]
    cell.indicatorView.isHidden = true

    return cell
}

它的可重用性問題....在您的TableViewCell覆蓋... prepareToReuse() .. 並在那里設置默認值...

func prepareForReuse()

如果一個 UITableViewCell object 是可重用的——也就是說,它有一個重用標識符——這個方法在 object 從 UITableView 方法返回之前調用。 出於性能原因,您應該只重置與內容無關的單元格屬性,例如 alpha、編輯和選擇 state。 在重用單元格時,tableView(_:cellForRowAt:) 中的表視圖委托應始終重置所有內容。 如果單元格 object 沒有關聯的重用標識符,則不調用此方法。 如果重寫此方法,則必須確保調用超類實現

蘋果文檔

在 storyboard 中隱藏指示器視圖

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM