My UITableView has two sections, so I created an enum for them:
private enum TableSections {
HorizontalSection,
VerticalSection
}
How do I switch with the "section" var passed in numberOfRowsInSection delegate method? It seems that I need to cast "section" to my enum type? Or is there a better way to accomplish this?
The error is "Enum case "HorizontalSection" not found in type '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
}
}
In order to do this, you need to give your enum a type (Int in this case):
private enum TableSection: Int {
horizontalSection,
verticalSection
}
This makes it so that 'horizontalSection' will be assigned the value 0 and 'verticalSection' will be assigned the value 1.
Now in your numberOfRowsInSection
method you need to use .rawValue
on the enum properties in order to access their integer values:
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
}
}
Ok, I figured it out, thanks @tktsubota for pointing me in the right direction. I'm pretty new to Swift. I looked into .rawValue and made some changes:
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
}
}
Jeff Lewis did it right, to elaborate on that and give the code litlle bit of more readiness -> my way of handling these things is to:
guard let sectionType = TableSections(rawValue: section) else {
return 0
}
switch sectionType {
case .horizontalSection:
return firstArray.count
case .verticalSection:
return secondArray.count
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With