gpt4 book ai didi

swift - 如何使用 cellForRowAtIndexPath 中的枚举来填充 tableView 单元格?

转载 作者:行者123 更新时间:2023-11-28 08:37:47 25 4
gpt4 key购买 nike

我有一个包含多个案例的枚举,我正在使用这些案例进行计算,用户可以根据自己的喜好设置一个案例。他们当然需要能够更改该偏好,所以我想在表格 View 中显示这些,以便他们可以看到所有这些并选择他们想要设置为他们的偏好。

enum Calculation: Int {

case Calculation1

case Calculation2

case Calculation3

case Calculation4

case Calculation5

case Calculation6

case NoChoice // this exist only for the little trick in the refresh() method for which I need to know the number of cases

// This static method is from http://stackoverflow.com/questions/27094878/how-do-i-get-the-count-of-a-swift-enum/32063267#32063267
static let count: Int = {
var max: Int = 0
while let _ = Calculation(rawValue: max) { max += 1 }
return max
}()

static var selectedChoice: String {
get {
let userDefaults = NSUserDefaults.standardUserDefaults().objectForKey("selectedCalculation")
if let returnValue = userDefaults!.objectForKey("selectedCalculation") as? String {
return returnValue // if one exists, return it
} else {
return "Calculation1" // if not, return this default value
}
}
set {
NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "selectedCalculation")
NSUserDefaults.standardUserDefaults().synchronize()
}
}
}

问题是枚举没有 indexPath,所以我无法遍历它并获取那些案例名称:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("formulaCell", forIndexPath: indexPath)

// Configure the cell...
let currentFormula = Calculation[indexPath.row] <- Error: Type 'Calculation.Type' has no subscript members
cell.textLabel?.text = currentFormula
return cell
}

我能想到的最好办法是创建一个包含这些案例的数组并使用它来创建单元格:

let Calculation = [Calculation1, Calculation2, Calculation3 ...etc] 

虽然有效,但显然是一个丑陋的 hack。

有更好的方法吗?

最佳答案

在您的枚举上使用 switch 语句来处理为每个案例创建单元格。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("formulaCell", forIndexPath: indexPath)
let calculation = Calculation(rawValue: indexPath.row + 1) //Start at 1 and add one.

switch calculation {
case .Calculation1:
//Configure cell for case 1
case .Calculation2
//Configure cell for case 2 etc...
default:
}

return cell
}

关于swift - 如何使用 cellForRowAtIndexPath 中的枚举来填充 tableView 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37278557/

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