没有调用swift3扩展函数

时间:2016-12-15 15:17:24

标签: xcode swift3

我是一名使用Swift 3在Xcode 8中使用应用程序的高中生。我正在尝试创建一种使用可折叠部分创建表格视图的方法。我正在尝试创建一种方法让我的代码创建一个视图,将所有数据推送到有组织的部分。我试图通过使用扩展程序显示我的数据。即使我在扩展后有一个断点,它也永远不会到达那一点。

编辑:应用程序的其余部分是在Main.storyboard中构建的,但是(如您所见),此tableViewController完全在代码中构建。 我可以为WeaponSelectVC创建一个segue但是,没有显示任何信息和部分。数据源/委托方法中的断点不会破坏'程序,没有信息显示。

编辑#2:在故事板中,按下按钮后,我使用以下代码转到此TableViewController(WeaponSelectVC):

    let window = UIWindow(frame:UIScreen.main.bounds)
    window.makeKeyAndVisible()
    window.rootViewController = UINavigationController(rootViewController: WeaponSelectVC())

我可以在Main.Storyboard ViewController(带按钮)加载之前看到表加载了一下。 当我们立即看到它时,表格中不包含任何信息或部分(当我单独打开时,它也不会被加载)。

以下是WeaponSelect类的代码:

struct section {
    var name: String!
    var items: [String]!
    var collapsed: Bool

    init(name: String, items: [String], collapsed: Bool = false) {
        self.name = name
        self.items = items
        self.collapsed = collapsed

    }
}

class WeaponSelectVC: UITableViewController {


    var sections = [section]()

    override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Weapons"

    // Initialize the sections array
    // Here we have three sections: Mac, iPad, iPhone
    sections = [
        section(name: "Canadian Weapons", items: ["Colt-browning machine gun M1895/14 (Canadian)","Lee Enfield (Canadian)", "Ross Rifle MK III(Canada)",  "Webley revolver (Canadian)", "Lewis (Canadian)", "Mills bomb (Canadian)"]),
        section(name: "German Weapons", items: ["KAR-98K (German)", "Mauser Gewehr 98 (German)", "Luger (German), Stick grenade (German)"]), ]
//        self.tableView.reloadData()

   self.tableView.dataSource = self
//        self.tableView.delegate = self
//        self.tableView.reloadData()
}

}


extension WeaponSelectVC {

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return sections.count
    }
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return sections[section].items.count
    }

    // Cell
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as UITableViewCell? ?? UITableViewCell(style: .default, reuseIdentifier: "cell")

        cell.textLabel?.text = sections[indexPath.section].items[indexPath.row]

        return cell
    }

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return sections[indexPath.section].collapsed ? 0 : 44.0
    }

    // Header
    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "header") as? CollapsibleTableViewHeader ?? CollapsibleTableViewHeader(reuseIdentifier: "header")

        header.titleLabel.text = sections[section].name
        header.arrowLabel.text = ">"
        header.setCollapsed(sections[section].collapsed)

        header.section = section
        header.delegate = self

        return header
    }

    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 44.0
    }

    func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 1.0
    }

}

    //
    // MARK: - Section Header Delegate
    //
extension WeaponSelectVC: CollapsibleTableViewHeaderDelegate {

    func toggleSection(_ header: CollapsibleTableViewHeader, section: Int) {
        let collapsed = !sections[section].collapsed

        // Toggle collapse
        sections[section].collapsed = collapsed
        header.setCollapsed(collapsed)

        // Adjust the height of the rows inside the section
        tableView.beginUpdates()
        for i in 0 ..< sections[section].items.count {
            tableView.reloadRows(at: [IndexPath(row: i, section: section)], with: .automatic)
        }
        tableView.endUpdates()
    }

}

1 个答案:

答案 0 :(得分:0)

从哪个类继承WeaponSelectVC?您的扩展程序应继承自UITableView

您的扩展程序类应如

extension UITableView {