2016-12-15 64 views
1

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

编辑:该应用程序的其余部分是建立在Main.storyboard,但是(如你所见),这tableViewController完全内置代码。 我可以创建一个WeaponSelectVC的segue,但是没有显示任何信息和部分。数据源/委托方法内的断点不会“中断”程序,也不会显示任何信息。

编辑#2:使用按钮之后的下面的代码从故事板,我原因请看本TableViewController(WeaponSelectVC)压:

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

我可以看到加载的主前瞬间的表格。故事板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() 
    } 

} 
+0

你设置'tableView.dataSource'? – shallowThought

回答

0

从哪个类是WeaponSelectVC遗传吗?您的扩展应该从UITableView继承。

您的扩展类应该看起来像

extension UITableView {