填充表格视图部分和单元格



我是 Swift 的新手程序员,正在为自己做一个项目,但遇到了一个小问题。 我有一个带有枚举的文件来填充表。也是表类中的扩展。 我的问题是我不能在另一个类中用这些枚举填充表格。下面我将展示实现代码。

枚举表.swift

import Foundation
import UIKit
// Section
enum sectionsTable:Int
{
case sectionTableOne
case sectionTableTwo
var titleSectionTable: String {
switch self {
case .sectionTableOne:
return  "titleSectionTableOne"
case .sectionTableTwo:
return  "titleSectionTableTwo"
}
}
}
// cell in section one
enum cellSectionOne:Int
{
case cellOne
case cellTwo
var titleCellSectionOne:String
{
switch self {
case .cellOne:
return  "cellOne"
case .cellTwo:
return  "cellTwo"
}
}
}
// icon cell in section one
enum cellIconSectionOne:Int {
case cellOneIcon
case cellTwoIcon
var icon: UIImage {
switch self {
case .cellOneIcon:
return UIImage(named: "iconOne.png")!
case .cellTwoIcon:
return UIImage(named: "iconTwo.png")!
}
}
}
//cell in section two
enum cellSectionTwo:Int
{
case cellOne
case cellTwo
var titleCellSectionTwo:String
{
switch self {
case .cellOne:
return  "cellOne"
case .cellTwo:
return  "cellTwo"
}
}
}
// icon cell in section two
enum cellIconSectionTwo:Int {
case cellOneIcon
case cellTwoIcon
var icon: UIImage {
switch self {
case .cellOneIcon:
return UIImage(named: "iconOne.png")!
case .cellTwoIcon:
return UIImage(named: "iconTwo.png")!
}
}
}

视图控制器.swift

extension ViewController: UITableViewDelegate, UITableViewDataSource
{

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return // ?
}
func numberOfSections(in tableView: UITableView) -> Int {
return // ?
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return  //?
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: idCell,for: indexPath) as! ViewControllerTableViewCell
//cellTextLabel ?
//cellImage ?

return cell
}
}

你可以像这样做枚举

enum sectionsTable:Int, CaseIterable
{
case sectionTableOne
case sectionTableTwo
var titleSectionTable: String {
switch self {
case .sectionTableOne:
return  "titleSectionTableOne"
case .sectionTableTwo:
return  "titleSectionTableTwo"
}
}
}
enum cellSectionOne:Int, CaseIterable
{
case cellOne
case cellTwo
var titleCellSectionOne:String
{
switch self {
case .cellOne:
return  "cellOne"
case .cellTwo:
return  "cellTwo"
}
}
}
enum cellIconSectionOne:Int, CaseIterable {
case cellOneIcon
case cellTwoIcon
var icon: UIImage {
switch self {
case .cellOneIcon:
return UIImage(named: "iconOne.png")!
case .cellTwoIcon:
return UIImage(named: "iconTwo.png")!
}
}
}

enum cellSectionTwo:Int, CaseIterable
{
case cellOne
case cellTwo
var titleCellSectionTwo:String
{
switch self {
case .cellOne:
return  "cellOne"
case .cellTwo:
return  "cellTwo"
}
}
}

enum cellIconSectionTwo:Int, CaseIterable {
case cellOneIcon
case cellTwoIcon
var icon: UIImage {
switch self {
case .cellOneIcon:
return UIImage(named: "iconOne.png")!
case .cellTwoIcon:
return UIImage(named: "iconTwo.png")!
}
}
}

并像这样使用

extension DetailViewController: UITableViewDataSource, UITableViewDelegate {

func numberOfSections(in tableView: UITableView) -> Int {
return sectionsTable.allCases.count
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
sectionsTable.init(rawValue: section)?.titleSectionTable
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return cellSectionOne.allCases.count
}
else {
return cellSectionTwo.allCases.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
if indexPath.section == 0 {
cell.textLabel?.text = cellSectionOne.init(rawValue: indexPath.row)?.titleCellSectionOne
}
else {
cell.textLabel?.text = cellSectionTwo.init(rawValue: indexPath.row)?.titleCellSectionTwo
}
return cell
}
}