所以,这是我的问题:
我想创建一个表来显示一些航类数据。这个想法是每个单元格代表一次旅行(即从城市 A 到 B 所需的所有航类)。每个航类都有 3 个属性,我会将它们划分为单独的标签,组成该行。因此,单元格必须相应地调整其高度。
这是我到目前为止所做的:
我的 View Controller 类:
@IBOutlet weak var dispTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
dispTable.dataSource = self
dispTable.delegate = self
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCellWithIdentifier("DispCell") as? DispTableViewCell {
let flight1: Flight = Flight()
let flight2: Flight = Flight()
curFlightsIda = [Flight]()
Flight1.Num = "1221"
Flight2.Num = "1331"
curFlightsIda.append(Flight1)
curFlightsIda.append(Flight2)
for voo in curFlightsIda {
let lbl = UILabel(frame: CGRectMake(0, 0, 100, 50))
lbl.textAlignment = NSTextAlignment.Center
lbl.text = voo.Num
cell.contentView.addSubview(lbl)
}
return cell
} else {
return DispTableViewCell()
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 100
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
其中的 Flight.num 仅用于测试。我能够以编程方式创建标签,但我觉得按照我的方式,布局将无法正常工作。
那么,如何创建代表线条的标签并正确放置它们?我走在正确的轨道上吗?我四处搜寻并找到了 XIB,但我不确定它是否更好..?老实说,我完全迷失了,任何帮助将不胜感激。
我不确定这是否有帮助,但它会是这样的:
跳闸单元:
航类 1 编号 航类 1 出发航类 1 持续时间
Flight2Num Flight2Departure Flight2Duration
航类 3 编号 航类 3 出发航类 3 持续时间
最佳答案
不要。
原因:
cellForRowAtIndexPath 会为每个单元格调用(也在滚动期间)。如果你尝试做太多事情,它就不会平滑滚动。此外,单元会被重用(如出队所示)。 iOS 仅创建可见单元格实例的数量加上一两个额外的单元格。如果重复使用单元格,则需要在添加新标签之前删除已添加的标签,这会导致下一个问题:如何识别它们(搜索所有 subview 并检查它是否是 UILabel 的实例或使用标签并通过标签找到它们......无论如何:如果你尝试做太多,它就不会平滑滚动。
相反:
在模板单元格“DispCell”中定义标签,或在 Storyboard中创建不同的模板单元格(并按名称将正确的单元格出列)。在那里,您可以使用 Storyboard布局约束来正确定位标签。
如果您有灵活数量的 curFlightsIda,您可以考虑最大数量(并隐藏空标签),也可以使用文本字段而不是标签。
关于iOS Swift - 有没有办法将 subview 添加到表格单元格中并正确定位它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33700950/