我在Swift中编写了一个iOS应用程序。我创建了一个表视图场景,但它只显示了它的第一个子视图。我试图让代码尽可能简单。我创建了一个带有两个标签的表格视图单元格,但它仍然只显示第一个标签。代码如下。为什么不显示第二个标签?我的AutoLayout约束是否有误?谢谢!
import UIKit
class TestCell: UITableViewCell {
let viewsDict: [String : UILabel] = [
"first": UILabel(),
"second": UILabel(),
]
override func awakeFromNib() {
viewsDict["first"]!.text = "first"
viewsDict["second"]!.text = "second"
viewsDict["first"]!.translatesAutoresizingMaskIntoConstraints = false
viewsDict["second"]!.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(viewsDict["first"]!)
contentView.addSubview(viewsDict["second"]!)
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[first]-[second]-|", options: [], metrics: nil, views: viewsDict))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[first]", options: [], metrics: nil, views: viewsDict))
contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[second]", options: [], metrics: nil, views: viewsDict))
}
}
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
}
}
答案 0 :(得分:2)
您的评论听起来像是在询问如何以编程方式自动设置单元格的高度。有几种不同的方法可以做到这一点:
最接近你想要的东西,在iOS 8及之后,你可以让tableView自己计算:
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 60.0;
您也可以设置tableView的rowHeight
属性,并使每一行都具有相同的高度:
self.tableview.rowHeight = 60.0
或者您可以实现委托方法来动态计算行高。这种方式还允许您检查每个单独的单元格并确定您应该查看的高度:
func tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let cell = tableView.cellForRowAtIndexPath(indexPath) as! TestCell
// Calculate the height that you want ..
let height = 60.0
return height
}
此StackOverflow post更深入地自动调整UITableViewCell
的大小。