繁体   English   中英

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

[英]Fill table view section and cell

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

enumsTable.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
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM