Swift TableViewCell 数组
Posted
技术标签:
【中文标题】Swift TableViewCell 数组【英文标题】:Swift TableViewCell Array 【发布时间】:2016-05-21 03:35:20 【问题描述】:我的情况:我想在第 1 节中的索引 X 的一行中的索引 X 处保存数组中的数据。
我的代码是:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int
return 1
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return setObjectToPass.count
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?
return "Section \(section)"
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
var cellEmpty = tableView.dequeueReusableCellWithIdentifier("LabelCell")
var countCell = 0
while countCell < setObjectToPass.count
let indexPaths = NSIndexPath(forRow: countCell, inSection: 0)
let cell = tableView.dequeueReusableCellWithIdentifier( "LabelCell", forIndexPath: indexPaths)
cell.textLabel!.text = String(setObjectToPass[countCell])
print(cell)
countCell+=1
return cell
我的问题是只有数组 SetObjectToPass 的第一个索引被传递并设置到 Cell.text
while counter < fetchResult?.count
let set = fetchResult![counter]
counter+=1;
setObject.append((set.reps?.integerValue)!)
【问题讨论】:
我建议研究UITableViewDataSource
的基本实现。你在cellForRowAtIndexPath(_:)
方法中所做的事情很奇怪。
好的,谢谢,我试试,还有什么建议吗?
setObjectToPass 数组值是什么?
这些是整数值
【参考方案1】:
您错误地实现了tableView(_:cellForRowAtIndexPath:indexPath:)
方法。
请记住,UITableViewDelegate
中的每个委托方法都像是在问你一个问题。例如,numberOfSectionsInTableView(_:)
就像问您“您的表格视图中需要多少个部分?”。您通过返回一个值来回答问题。
tableView(_:cellForRowAtIndexPath:indexPath:)
类似。它也提出了一个问题。它询问“我应该在这个索引路径的表格行中显示什么?”
在您的代码中,您似乎想要给出多个答案 - 循环遍历数组并尝试多次返回。但是这样不行,你只能给出一个答案。
在while
循环的第一次迭代中,执行命中return
并停止。这就是为什么您只能看到第一个表格单元格。
因此,您应该更改您的代码,以便它只给出一个问题的答案:
let cell = tableView.dequeueReusableCellWithIdentifier("LabalCell")
cell.textLabel?.text = String(setObjectsToPass[indexPath.row])
return cell
【讨论】:
我收到 setObjectToPass 的“使用未解析的标识符”。声明在这里:class TableViewControllerResult: UITableViewController //Fetch variable from other ViewController var counterToPass: Int! var counterSetToPass: Int! var setObjectToPass: [Int]! override func viewDidLoad() super.viewDidLoad() print(counterToPass)
糟糕!我的意思是setObjectToPass
@HendrikBreezy
结合其他评论它的工作,tyvm!【参考方案2】:
不要在cellForRowAtIndexPath
委托方法中使用循环。 cellForRowAtIndexPath
方法根据numberOfRowsInSection
计数行调用每一行,只需使用indexpath.row
,使用此代码,
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
var cellEmpty = tableView.dequeueReusableCellWithIdentifier("LabelCell")
let cell = tableView.dequeueReusableCellWithIdentifier( "LabelCell", forIndexPath: indexPaths)
cell.textLabel!.text = setObjectToPass[indexPath.row] as? String
return cell
希望对你有帮助
【讨论】:
我使用String(setObjectToPass[indexPath.row])
保存标签 Text 因为它无法将 Int 转换为 String 现在工作!以上是关于Swift TableViewCell 数组的主要内容,如果未能解决你的问题,请参考以下文章
Swift 4,使用 Array 和 TableViewCell 存储和显示数据
动态 CollectionView 依赖于 SWIFT 4.0 中的 TableViewCell 值
swift tableViewCell touch.swift