2017-04-02 54 views
5

我有一個名爲CCLineupTableViewCell定製UITableViewCell,看起來像這樣:斯威夫特3:的UILabel不是在自定義顯示的UITableViewCell

@IBOutlet weak var artistNameLabel: UILabel! 
@IBOutlet weak var artistValuationLabel: UILabel! 

override func awakeFromNib() { 
    super.awakeFromNib() 
    // Initialization code 

} 

override func setSelected(_ selected: Bool, animated: Bool) { 
    super.setSelected(selected, animated: animated) 

    // Configure the view for the selected state 
} 

我接入小區中cellForRowAt indexPath: IndexPath方法,像這樣:

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

我自定義單元格設置是像這樣:

enter image description here

enter image description here

正如您可以看到它在IB和代碼中設置正確。奇怪的是,第一個標籤artistNameLabel可通過cellForRowAt indexPath: IndexPath訪問,並且完美地工作。然而,artistValuationLabel儘管通過故事板設置了默認文字,但它甚至不會顯示出來。

編輯:

我已經添加了從筆尖約束的圖片。它固定在單元的右側,頂部和底部(以及縱橫比)。

enter image description here

+1

您是否檢查過'UITableViewCell'約束,可能因爲錯誤約束而未顯示標籤。 –

+0

@Santiagocarmonagonzález約束條件不錯,但我會發布它們。 –

+0

嘗試設置該標籤的值高於**內容中的「水平」屬性中的'artistNameLabel'值壓縮阻力優先**或恆定約束寬度值。 –

回答

3

你的錯誤是在你沒有設置的約束錯誤。

添加寬度約束以確保artistValuationLabel將有空間顯示。

+0

任何人都知道爲什麼會發生這種情況? 'adjustsFontSizeToFitWidth'屬性被設置爲'true'。希望這將得到修正,因爲'aspectRatio'被正確設置(所有其他約束)。如果我不問這個問題,我無法知道什麼是錯的。 –

+0

可能發生這種情況,因爲'artistNameLabel'的寬度優先級高於'artistValuationLabel',所以當名稱非常長時,標籤會將空間「保留」到另一個標籤。 當您將特定寬度設置爲'artistValuationLabel'時,它具有1000個優先級,所以此空間將始終保留。 –

+0

但是這些標籤並沒有重疊,因爲我已經改變了它,所以有一個阻止這個的約束。我拿出寬度來看看它是否會起作用,但它仍然不行,所以我不得不把它放回去。 –

0

由於寬度限制不當,這件事發生了。要麼你需要添加比例寬度,要麼你應該在你設計的那個設備上運行。

+0

你也可以給左邊的約束。 –