gpt4 book ai didi

ios - 将多个原型(prototype)单元格加载到 UITableView

转载 作者:IT王子 更新时间:2023-10-29 05:26:21 26 4
gpt4 key购买 nike

我目前有一个包含 2 行自定义单元格的 UITableView。我最近在 Storyboard中添加了第二个原型(prototype)单元格,并试图将其添加到我的 UITableView 但没有成功。我的 cellForRowAtIndexPAth 方法如下:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell: FlightsDetailCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as FlightsDetailCell

cell.userInteractionEnabled = false

if indexPath.section == 0 {

cell.graphView.enableBezierCurve = true
cell.graphView.enableReferenceYAxisLines = true
cell.graphView.enableYAxisLabel = true
cell.graphView.colorYaxisLabel = UIColor.whiteColor()
cell.graphView.delegate = UIApplication.sharedApplication().delegate as BEMSimpleLineGraphDelegate
cell.graphView.dataSource = UIApplication.sharedApplication().delegate as BEMSimpleLineGraphDataSource
return cell
}

if indexPath.section == 1 {
cell.graphView.enableBezierCurve = true
cell.graphView.enableReferenceYAxisLines = true
cell.graphView.enableYAxisLabel = true
cell.graphView.colorYaxisLabel = UIColor.whiteColor()
cell.graphView.delegate = self
cell.graphView.dataSource = self
return cell
}

if indexPath.section == 2 {

let cell2: FlightsInformationCell = tableView.dequeueReusableCellWithIdentifier("Cell2", forIndexPath: indexPath) as FlightsInformationCell
cell2.userInteractionEnabled = false

return cell2
}

return cell

}

第 0 节和第 1 节正确加载 ID 为“Cell”的原型(prototype)单元格,但是当我转到第 2 节时,我得到第一个原型(prototype)单元格的另一个实例,但没有任何数据,因为它没有被分配委托(delegate)或数据源。否则,单元格的设置分别与“Cell”和“Cell2”的 ID 相同,但我似乎无法访问“Cell2”。

补充说明:我的 Storyboard中有 2 个原型(prototype)单元格,它们的设置相同,因为它们都在相同的框中标记了标识符,继承自它们自己的类,并且在我的 UITableView 中声明为相同。至于委托(delegate)和数据源,我的原始原型(prototype)单元包含一个图形(使用 BEMSimpleLineGraph),此单元的每个实例都有自己的委托(delegate)和数据源,并在上面的代码中显示了操作 0 和 1。

下图中的第一个单元格(灰色)是保存图形的原始单元格,单元格 2 位于其正下方,呈白色。

enter image description here

最佳答案

我使用类似于您在 cellForRowAtIndexPath 中的代码设置了一个测试应用程序,我得到了相同的结果。即使输入了我的 if indexPath.section == 2 子句中的代码,返回的单元格看起来与我的前两个单元格相同(但标签中没有字符串);尽管我用不同的 subview 设置了它,但日志显示它是我想要的部分的正确类2. 为什么会发生这种情况,我不知道,但要修复它,您需要做的就是像这样将 if block 中的单元格出队。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {


cell.userInteractionEnabled = false

if indexPath.section == 0 {
let cell: FlightsDetailCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as FlightsDetailCell
cell.graphView.enableBezierCurve = true
cell.graphView.enableReferenceYAxisLines = true
cell.graphView.enableYAxisLabel = true
cell.graphView.colorYaxisLabel = UIColor.whiteColor()
cell.graphView.delegate = UIApplication.sharedApplication().delegate as BEMSimpleLineGraphDelegate
cell.graphView.dataSource = UIApplication.sharedApplication().delegate as BEMSimpleLineGraphDataSource
return cell
}

else if indexPath.section == 1 {
let cell: FlightsDetailCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as FlightsDetailCell
cell.graphView.enableBezierCurve = true
cell.graphView.enableReferenceYAxisLines = true
cell.graphView.enableYAxisLabel = true
cell.graphView.colorYaxisLabel = UIColor.whiteColor()
cell.graphView.delegate = self
cell.graphView.dataSource = self
return cell
}

else {
let cell2: FlightsInformationCell = tableView.dequeueReusableCellWithIdentifier("Cell2", forIndexPath: indexPath) as FlightsInformationCell
cell2.userInteractionEnabled = false
return cell2
}

这可以进一步重构以删除重复的代码,但这应该可行...

关于ios - 将多个原型(prototype)单元格加载到 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com