天天看點

[IOS]如何在table cell中使用UIStackView和一些問題

1. UIStackView多層嵌套問題

本來我的設計是想在cell裡面使用UIStackView,然後裡面再嵌套一個UIStackView,發現這樣有點問題

[IOS]如何在table cell中使用UIStackView和一些問題
[IOS]如何在table cell中使用UIStackView和一些問題

就是現在灰色的View這塊,本意是想使用一個垂直的UIStackView,但是示範的時候發現cell并沒有遵循我的限制

[IOS]如何在table cell中使用UIStackView和一些問題

真機示範的時候會發現隻有圈着的label顯示了,垂直的UIStackView的下面那個label被壓下去,但問題是我在垂直的UIStackView也設定了内部限制了,顯然顯示的限制并非設計的那樣運作.這樣嵌套會導緻很多問題,而且還不知道怎麼解決

2. 使用View

從上面可知,

第一層的UIStackView是沒問題的,是以我把第二層的UIStackView換成view,裡面再裝一個UIStackView呢,實驗證明和上面的情況是一樣的......,是以這樣子的多層嵌套還沒有很好的解決辦法.那就不用UIStackView了,直接上一個view吧,而且我發現你裡面這兩個垂直排布的label也不能加限制,加了後又會和嵌套UIStackView的顯示情況一樣了........

3.自定義cell

然後自定義一個cell:

import UIKit

class PortInfoTableViewCell: UITableViewCell {

    @IBOutlet weak var cellStack: UIStackView!
    
    var protocalLabel: UILabel?
    
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        protocalLabel = cellStack.arrangedSubviews[0] as! UILabel
    }

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

        // Configure the view for the selected state
    }

    
}
           

這裡參考了兩篇文章:

- Access variable in different class - Swift 

如何跨類獲得protocalLabel

- stored property “text” without initial value prevents synthesized initializers

一個成員變量初始化錯誤,不要忘記加上'?'

var protocalLabel: UILabel?