我的UITableView有两个部分,所以我为它们创建了一个枚举:
private enum TableSections {
HorizontalSection,
VerticalSection
}
如何切换numberOfRowsInSection委托方法中传递的“section”var?看来我需要将“section”转换为我的枚举类型?或者有更好的方法来实现这一目标吗?
错误是“Enum case”HorizontalSection“未在类型'int'中找到。
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case .HorizontalSection:
return firstArray.count
case .VerticalSection:
return secondArray.count
default
return 0
}
}
答案 0 :(得分:5)
为了做到这一点,你需要给你的枚举一个类型(在这种情况下为Int):
private enum TableSection: Int {
horizontalSection,
verticalSection
}
这使得'horizontalSection'将被赋值为0,'verticalSection'将被赋值为1.
现在,在您的numberOfRowsInSection
方法中,您需要在枚举属性上使用.rawValue
才能访问其整数值:
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case TableSection.horizontalSection.rawValue:
return firstArray.count
case TableSection.verticalSection.rawValue:
return secondArray.count
default:
return 0
}
}
答案 1 :(得分:3)
杰夫·刘易斯做得对,详细阐述并给予代码更多的准备 - >我处理这些事情的方法是:
guard let sectionType = TableSections(rawValue: section) else {
return 0
}
switch sectionType {
case .horizontalSection:
return firstArray.count
case .verticalSection:
return secondArray.count
}
答案 2 :(得分:2)
好的,我想通了,谢谢@tktsubota指出我正确的方向。我对Swift很陌生。我查看了.rawValue并进行了一些更改:
private enum TableSections: Int {
case HorizontalSection = 0
case VerticalSection = 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case TableSections.HorizontalSection.rawValue:
return firstArray.count
case TableSections.VerticalSection.rawValue:
return secondArray.count
default
return 0
}
}